橡皮擦,一个逗趣的互联网高级网虫。新的系列,让我们一起进入 Django 世界。
三、Django 后台完善
3.1 列表页展示内容修改
在
上一篇博客
实现了列表数据展示,但是只显示了一列,并且列标题为英文,本篇博客首先解决该问题。
修改
blog
文件夹内部的
admin.py
文件,代码如下:
from django. contrib import admin
from blog. models import Blog
@admin. register( Blog)
class BlogAdmin ( admin. ModelAdmin) :
list_display = [ "title" , "content" , "creatr_time" ]
list_display
属性值对应的列表项,都是
models.py
代码中的内容,要对应好,否则会出现下述类似错误:
NameError: name 'creatr_time' is not defined
执行保存代码,Django 会自动进行加载,刷新浏览器即可看到效果。
代码保存即重新加载输入数据如下:
D:\blog\admin.py changed, reloading.
Watching for file changes with StatReloader
Performing system checks.. .
System check identified no issues ( 0 silenced) .
March 25, 2021 - 12:04:53
3.2 列表自定义列实现
除了
models.py
中定义的属性,可以在
list_display
进行调用,还可以自行创建列供其使用。
先修改
models.py
中的内容:
from django. db import models
class Blog ( models. Model) :
title = models. CharField( "标题" , max_length= 100 )
content = models. TextField( "内容" )
creatr_time = models. DateField( "发布时间" )
def __str__ ( self) :
return self. title
def introduction ( self) :
return self. content[ 0 : 18 ] + "..."
introduction. short_description = "内容简介"
同步修改
admin.py
中的内容,在
list_display
中新增
introduction
:
@admin. register( Blog)
class BlogAdmin ( admin. ModelAdmin) :
list_display = [ "title" , "introduction" , "content" , "creatr_time" ]
search_fields = [ "title" ]
运行代码,效果图如下:
3.3 列表搜索实现
实现列表检索,需要增加的代码也非常简单,在
admin.py
中的类
BlogAdmin
中增加如下代码:
@admin. register( Blog)
class BlogAdmin ( admin. ModelAdmin) :
list_display = [ "title" , "content" , "creatr_time" ]
search_fields = [ "title" ]
3.4 只读字段
在 Django 中,可以设置某些字段不被修改,只读。例如,我们将发布时间设置为只读字段。
修改
admin.py
文件中的代码:
@admin. register( Blog)
class BlogAdmin ( admin. ModelAdmin) :
list_display = [ "title" , "introduction" , "content" , "creatr_time" ]
search_fields = [ "title" ]
readonly_fields = [ "title" ]
3.5 ModelAdmin 常用的属性和方法
本篇博客主要介绍的是
BlogAdmin(admin.ModelAdmin)
这个类,该类继承自
ModelAdmin
。
常见的属性如下
list_display
:列表显示字段筛选;
search_fields
:搜索字段筛选;
readonly_fields
:设置只读字段;
ordering
:排序字段;
fields
:表单页显示字段;
exclude
:表单页不显示字段;
list_filter
:边栏筛选;
list_editable
:列表页可编辑字段设置;
list_per_page
:列表页显示条数;
empty_value_display
:空数据替换文字。
常见的方法如下
save_model()
:保存;
delete_model()
:删除;
get_search_results()
:自定义检索;
get_list_display()
:对
list_display
属性的扩展;
get_readonly_fields()
:对
readonly_fields
属性的扩展;
get_search_fields()
:对
search_fields
属性的扩展;
上述属性和方法都会在后续的博客中进行学习,除了以上内容外,Django 还有更多的 QuerySet 技巧,这些都留给后面的文章吧。
相关阅读
Python 爬虫 100 例教程,超棒的爬虫教程,立即订阅吧
Python 游戏世界(更新中,目标文章数 50+,现在订阅,都是老粉)
Python 爬虫小课,精彩 9 讲
今天是持续写作的第
119
/ 200 天。
如果你想跟博主建立亲密关系,可以关注同名公众号
梦想橡皮擦
,近距离接触一个逗趣的互联网高级网虫。
博主 ID:梦想橡皮擦,希望大家
点赞
、
评论
、
收藏
。