发布博客文章
回顾
在上一章中,我们煞费苦心的利用控制台中的命令行对我们的模型进行操作——增删改查。其中,我们创建了一个超级管理员用户,而且能在浏览器中启动http://127.0.0.1:8000/admin/,进入如下页面,本节我们将通过这个系统进行博客发布。
发布博客
那么,如何利用超级管理员发布博客文章呢?我们利用自己创建的用户名和密码进行登录。登录成功后,进入系统,见到如下页面:
我们可以看到,Groups和Users是Django在用户管理应用中默认的用户分类。单击User,我们能看到当前当前项目只有一个用户zoeu,我们可以自己创建Groups和Users,读者可以自己通过单击Add自行添加。
我们今天的任务是通过超级管理员发布博客文章,所以点击BLOGS下的Add按钮,我们进入如下页面,
在这个页面中添加自己想要完成的博客内容,这里所填的表单中的各项与我们在BlogArticles类中的属性对应,当我们填好每一项的内容之后,单击保存,这篇标题为《开工大吉》的博客就被保存到数据库中,页面跳转到博客文章列表,并且将在页面上方显示添加成功,如图所示:
接下来我们可以通过查询数据库查看我们的博客文章内容:
sqlite> .header on
sqlite> .mode column
sqlite> select * from blogs_blogarticles;
id title body publish author_id
---------- ---------- --------------- ------------------- ----------
1 开工大吉 假期还没过足瘾,表示舍不得国庆 2019-10-09 16:58:25 1
sqlite>
当然,我们上图中的博客列表有些简单,我们可以自定义让列表页更加丰富,所以我们需要在./blog/admin.py文章中,增加部分代码:
from django.contrib import admin
from .models import BlogArticles
# Register your models here.
class BlogArticlesAdmin(admin.ModelAdmin):
list_display = ("title", "author", "publish")
list_filter = ("publish", "author")
search_fields = ("title", "body")
raw_id_fields = ("author",)
date_hierarchy = "publish"
ordering = ["-publish", "author"]
admin.site.register(BlogArticles, BlogArticlesAdmin)
保存后刷新我们页面,我们的列表显示如下:
新增代码解释如下:
- 首先定义一个BlogArticlesAdmin类,继承自ModelAdmin
- list_display属性:设置列表可显示的字段,将列表栏显示文章标题、作者、和发布时间
- list_filter属性:设置过滤选项,通过发布时间和作者对文章进行筛选
- search_fields属性:搜索文章标题和文章内容进行文章查找
- raw_id_fields属性:显示外键详细信息
- date_hierarchy属性:按日期月份筛选
- ordering属性:按发布日期排序
至此,相比于我们自己用代码去完成这些功能,Django能够用一行代码即可增加对一个模型(数据表)的增删查改,我们是不是看到一个强大的管理员工具,更多的功能需要自己去发现。
我们现在已经发布我们的博客,但是最重要的是如何把自己的博客给别人看到呢?下一章中我们就将沿着这个思路介绍我们的视图(Views),学会将我们的优秀的博客内容向大家展示(大显身手)。
下一个内容见。