Django 做个小后台,细节在完善一点点,滚雪球学 Python 第三阶段

举报
梦想橡皮擦 发表于 2021/03/25 23:24:59 2021/03/25
【摘要】 橡皮擦,一个逗趣的互联网高级网虫。新的系列,让我们一起进入 Django 世界。 滚雪球学 Python 第三轮 三、Django 后台完善3.1 列表页展示内容修改3.2 列表自定义列实现3.3 列表搜索实现3.4 只读字段3.5 ModelAdmin 常用的属性和方法 三、Django 后台完善 3.1 列表页展示内容修改 在上一篇...

橡皮擦,一个逗趣的互联网高级网虫。新的系列,让我们一起进入 Django 世界。

三、Django 后台完善

3.1 列表页展示内容修改

上一篇博客实现了列表数据展示,但是只显示了一列,并且列标题为英文,本篇博客首先解决该问题。
Django 做个小后台,细节在完善一点点,滚雪球学 Python 第三阶段
修改 blog 文件夹内部的 admin.py 文件,代码如下:

from django.contrib import admin
from blog.models import Blog

# Register your models here.
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin): # list_display  用于设置列表页展示哪些字段 list_display = ["title","content","creatr_time"]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

list_display 属性值对应的列表项,都是 models.py 代码中的内容,要对应好,否则会出现下述类似错误:

NameError: name 'creatr_time' is not defined

  
 
  • 1

执行保存代码,Django 会自动进行加载,刷新浏览器即可看到效果。

Django 做个小后台,细节在完善一点点,滚雪球学 Python 第三阶段
代码保存即重新加载输入数据如下:

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.2 列表自定义列实现

除了 models.py 中定义的属性,可以在 list_display 进行调用,还可以自行创建列供其使用。
先修改 models.py 中的内容:

from django.db import models

# Create your models here.
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 = "内容简介"

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

同步修改 admin.py 中的内容,在 list_display 中新增 introduction

@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin): # list_display  用于设置列表页展示哪些字段 list_display = ["title","introduction","content","creatr_time"] search_fields = ["title"]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

运行代码,效果图如下:
Django 做个小后台,细节在完善一点点,滚雪球学 Python 第三阶段

3.3 列表搜索实现

实现列表检索,需要增加的代码也非常简单,在 admin.py 中的类 BlogAdmin 中增加如下代码:

@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin): # list_display  用于设置列表页展示哪些字段 list_display = ["title","content","creatr_time"] # 增加搜索字段 search_fields = ["title"]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Django 做个小后台,细节在完善一点点,滚雪球学 Python 第三阶段

3.4 只读字段

在 Django 中,可以设置某些字段不被修改,只读。例如,我们将发布时间设置为只读字段。
修改 admin.py 文件中的代码:

@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin): # list_display  用于设置列表页展示哪些字段 list_display = ["title","introduction","content","creatr_time"] search_fields = ["title"] readonly_fields = ["title"]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Django 做个小后台,细节在完善一点点,滚雪球学 Python 第三阶段

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 技巧,这些都留给后面的文章吧。

相关阅读

  1. Python 爬虫 100 例教程,超棒的爬虫教程,立即订阅吧
  2. Python 游戏世界(更新中,目标文章数 50+,现在订阅,都是老粉)
  3. Python 爬虫小课,精彩 9 讲

今天是持续写作的第 119 / 200 天。
如果你想跟博主建立亲密关系,可以关注同名公众号 梦想橡皮擦,近距离接触一个逗趣的互联网高级网虫。
博主 ID:梦想橡皮擦,希望大家点赞评论收藏

文章来源: blog.csdn.net,作者:梦想橡皮擦,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/hihell/article/details/115204870

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。