Django1.9开发博客(8)- 继续完善
到现在为止我们已经完成的差不多了,并且基本的东西都已经学到了,是时候用起来了。 我们的博客还有很多功能需要完善,下面抛砖引玉新增几个功能,还有其他功能等你自己去发现和实现。
草稿箱
之前我们新建文章的时候只是是保存到数据库,也就是仅仅保存了草稿,还没有对外发布, 在博客首页上面是看不到的,因为published_date字段为空。这里我们需要添加一个草稿箱的链接。还是四部曲。
第一步,添加一个链接:
打开mysite/templates/mysite/base.html文件,在
1 |
<h1><a href="/">Django Girls Blog</a></h1> |
的上面一行添加如下链接:
1 |
<a href="{% url 'post_draft_list' %}" class="top-menu">
|
第二步就是配置urls,在blog/urls.py中添加:
1 |
url(r'^drafts/$', views.post_draft_list, name='post_draft_list'), |
第三步在blog/views.py中添加一个view:
1 |
def post_draft_list(request): |
第四步添加一个template,新建blog/templates/blog/post_draft_list.html,内容如下:
1 |
{% extends 'blog/base.html' %}
|
这个模板跟我们的post_list.html非常相似。
刷新首页,点击那个草稿箱链接,看看效果。

发布功能
在文章详情页面添加一个发布的按钮,如果觉得合适的时候就能发布文章了。 每个新功能都是四部曲,你照着这四步做就行,你会发现越来越简单。
第一步在页面上添加一个链接或Form表单,这里我们添加一个链接。
打开blog/template/blog/post_detail.html,将下面这段
{% if post.published_date %}
|
换成下面这段:
1 |
{% if post.published_date %}
|
这里增加了一个else语句,意思是如果没有发布日期的话就增加一个发布按钮。
第二步添加urls配置,打开blog/urls.py:
1 |
url(r'^post/(?P<pk>[0-9]+)/publish/$', views.post_publish, name='post_publish'), |
第三步视图,打开blog/views.py:
1 |
def post_publish(request, pk): |
第四步模板,由于这次没有引入新的模板,所以这步省略。
刷新后看效果:

发布之后的效果:

注意观察发布前和发布后文章的发布日期那个位置的变化。并且发布后再去首页看看,文章已经可以正常显示了。
删除功能
最后当然需要一个删除功能了。
第一步是在页面上添加链接,打开blog/templates/blog/post_detail.html,在编辑按钮下面一行添加如下:
1 |
<a class="btn btn-default" href="{% url 'post_remove' pk=post.pk %}">
|
第二步配置urls映射,打开blog/urls.py,添加如下一行:
1 |
url(r'^post/(?P<pk>[0-9]+)/remove/$', views.post_remove, name='post_remove'), |
第三步添加视图view,打开blog/views.py,添加一个视图函数:
1 |
def post_remove(request, pk): |
第四步模板,由于这次又没有新的模板,所有这步省略。
OK,刷新页面看效果:

删除后再去首页看,已经没有这篇文章了。
分页功能
在首页显示文章列表时候需要分页显示,这时候可以使用django内置的Paginator来分页
关于分页的官方文档:https://docs.djangoproject.com/en/1.9/topics/pagination/
设置非常简单,简直是简单到变态。
在view里面使用Paginator
1 |
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger def post_list(request): |
这里我传到页面去的posts是一个Page对象,另外我还传了一个”page”标志,因为其他方法也会使用到这个页面,但是不需要分页的。
修改post_list.html页面,增加分页div
1 |
{% for post in posts %}
|
刷新下列表首页,看看分页效果。
Django1.9开发博客(8)- 继续完善的更多相关文章
- Django1.7开发博客
转自: http://www.pycoding.com/articles/category/django 基于最新的django1.7写的,通俗易懂,非常适合新手入门. 感谢博主! 参考教程: htt ...
- Django1.9开发博客(14)- 集成Xadmin
xadmin是一个django的管理后台实现,使用了更加灵活的架构设计及Bootstrap UI框架, 目的是替换现有的admin,国人开发,有许多新的特性: 兼容 Django Admin 使用 B ...
- Django1.9开发博客(7)- 实现功能
到目前为止我们已经完成了一个django应用的所有基础部分. 包括url配置.视图.模型和模板.接下来开始继续完善我们的博客系统了. 首先我们需要一个显示每篇文章的详细页面,对不? 文章详情 对于首页 ...
- Django1.9开发博客(12)- i18n国际化
国际化与本地化的目的为了能为各个不同的用户以他们最熟悉的语言和格式来显示网页. Django能完美支持文本翻译.日期时间和数字的格式化.时区. 另外,Django还有两点优势: 允许开发者和模板作者指 ...
- Django1.9开发博客(11)- 富文本与代码高亮
TinyMCE是一个轻量级的基于浏览器的所见即所得编辑器,支持目前流行的各种浏览器,由JavaScript写成. 功能配置灵活简单(两行代码就可以将编辑器嵌入网页中),支持AJAX.另一特点是加载速度 ...
- Django1.9开发博客(13)- redis缓存
Redis 是一个高性能的key-value数据库.redis的出现, 很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用. 它提供了Pyth ...
- Django1.9开发博客(10)- 全文搜索
Django本身不提供全文检索的功能,但django-haystack为其提供了全文检索的框架. django-haystack能为Django提供whoosh,solr,Xapian和Elastic ...
- Django1.9开发博客(9)- 用户认证
你应该注意到了一点,当你去新建.修改和删除文章的时候并不需要登录,这样的话任何浏览网站的用户都能随时修改和删除我的文章.这个可不是我想要的! 编辑和删除的认证 我们需要保护post_new, post ...
- Django1.9开发博客(6)- 模板继承
模板继承就是网站的多个页面可以共享同一个页面布局或者是页面的某几个部分的内容.通过这种方式你就需要在每个页面复制粘贴同样的代码了. 如果你想改变页面某个公共部分,你不需要每个页面的去修改,只需要修改一 ...
随机推荐
- overflow遭遇场景
没有设置高度而由内容撑高的子div在遇到固定高度的父div,想做一个离上边缘有间距的效果,给padding-top会同时撑大父div,给margin-top会把父div拉下来,这时候的子div像是紧紧 ...
- Progressive Scanning (逐行扫描) vs Interlaced Scanning (隔行扫描)
source: http://sh.sina.com.cn/20041207/231443445.shtml 逐行扫描每一帧图像均是由电子束顺序地一行接着一行连续扫描而成.要得到稳定的逐行扫描图像,每 ...
- Audio Session Interruption
近期处理了一个挂断电话后,莫名手机开始播放音乐的Bug. 所以顺便在这总结一下,对于IOS的AudioSession中断的几种处理情况. 一.通过C语言的init方法配置interruptionl回调 ...
- 【Unity3D基础】让物体动起来①--UGUI鼠标点击移动
背景 首先还是先声明自己是比较笨的一个人,总是找不到高效的学习方法,目前自己学习Unity3D的方式主要是两种,一种是直接看高质量的源码,另一种是光看不行还要自己动手,自己写一些有代表性的小程序,这也 ...
- POJ 2104 K-th Number(主席树——附讲解)
Description You are working for Macrohard company in data structures department. After failing your ...
- CKplayer功能配置
开源ckplayer 网页播放器, 跨平台(html5, mobile),flv, f4v, mp4, rtmp协议. webm, ogg, m3u8 ! 博客分类: Javascript /Jque ...
- 纯CSS实现帅气的SVG路径描边动画效果(转载)
本文转载自: 纯CSS实现帅气的SVG路径描边动画效果
- jade报错:unexpected token
背景:项目在执行gulp命令构建的时候报了jade错误,错误位置指向的是一个空白行,而这个空白行的上下文都是一些注释,错误信息显示unexpected token "pipeless-tex ...
- [转]如何在Java中调用DLL方法
转载地址:http://developer.51cto.com/art/200906/129773.htm Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台 ...
- Android 进阶 Android 中的 IOC 框架 【ViewInject】 (下)
上一篇博客我们已经带大家简单的吹了一下IoC,实现了Activity中View的布局以及控件的注入,如果你不了解,请参考:Android 进阶 教你打造 Android 中的 IOC 框架 [View ...