django-再启程【django自带后台的汉化与定制】


发布时间:2019-02-15 13:08    作者: Uncle Hui   已过去:1 年,3 月   阅读总量:183 已被赞:0


django自带有非常好用的后台,其登录地址为127.0.0.1/admin,我个人喜好这个,不少人喜欢使用xadmin,我也使用过,感觉不怎么样,有时间再研究一下它,自带后台怎么使用呢?

第一步,系统汉化与时间设置,管理员的设置:

settings.py:

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

cmd,项目虚拟环境下:

###创建超级用户
python manage.py createsuperuser

第二步,admin登录框页面的修改:

admin.py:

# 修改 admin 页面显示标题
admin.site.site_header = "春晖成绩查询系统"
# 修改 admin 页面头部标题
admin.site.site_title = "春晖成绩查询系统"

第三步,models.py里建好数据表:

models.py:

class Student(models.Model):
    name = models.CharField(verbose_name='姓名', max_length=50)
    sex = models.CharField(verbose_name='性别', max_length=50)
    age = models.IntegerField(verbose_name='年龄')
    address = models.CharField(verbose_name='家庭住址', max_length=250)
    enter_date = models.DateField(verbose_name='入学时间')
    remarks = models.TextField(verbose_name='备注', blank=True)
    class Meta:  # 后台管理显示汉字,这里必须用Meta
        verbose_name = '学生信息'
        verbose_name_plural = verbose_name

说明:verbose_name='姓名',这个的设置,让后台才能显示汉字。Meta类的使用,注册进去后台才会显示汉字,否则显示模型名字,如:Student

Meta类的使用,参看这个文章《Meta类的常用配置》,这里要啰嗦下,

ordering

这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的。这是一个字符串的元组或列表,没有一个字符串都是一个字段和用一个可选的表明降序的'-'构成。当字段名前面没有'-'时,将默认使用升序排列。使用'?'将会随机排列

  • ordering=['order_date'] # 按订单升序排列
  • ordering=['-order_date'] # 按订单降序排列,-表示降序
  • ordering=['?order_date'] # 随机排序,?表示随机
  • ordering=['-pub_date','author'] # 以pub_date为降序,在以author升序排列

 

第四步,admin.py里注册模型到后台管理:

admin.py:

1.引入要注册的模型,如:

from app.models import Student

2.用装饰器@admin.register()注册(这个方法简单,我喜欢使用,方法不定,还有其他法子)

@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
    '''学生模型'''
    list_display = ['name', 'sex','age','address','enter_date','remarks']
    search_fields = ['name', 'sex','age','address','enter_date','remarks']
    list_filter = ['name', 'sex','age','address','enter_date','remarks']

说明:list_display,显示的字段,search_fields搜索的字段,list_filter过滤器。

 

常用admin定制选项表:

# 在使用后台管理的时候,可能需要自己定制 admin 的显示内容,可以通过如下进行定制
@admin.register(Post)
class PostAdmin(admin.ModelAdmin)
list_display = ['title', 'category', 'author'] # 需要展示的字段
# 或者通过以下方式注册,效果是一样的
class PostAdmin(admin.ModelAdmin)
list_display = ['title', 'category', 'author'] 
admin.site.register(Post, PostAdmin)
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin)
   # 显示的标签字段,字段不能是 ManyToManyField 类型
   list_display =['title', 'publisher']
# 设置每页显示多少条记录,默认是100条
   list_per_page = 20  
   # 设置默认可编辑字段
   list_editable = ['title', 'author']   
   # 排除一些不想被编辑的 fields, 没有在列表的不可被编辑
   fields = ['title', 'author']  
   # 设置哪些字段可以点击进入编辑界面
   list_display_links = ['tag', 'title']
   # 进行数据排序,负号表示降序排序
   ordering = ['-id',]
   # 显示过滤器
   list_filter = ['author', 'title']
   # 显示搜索框,搜索框大小写敏感
   search_fields = ['title',] 
   # 详细时间分层筛选
   date_hierarchy = 'create_time' 
   # 增加多选框 filter_horizaontal 和 filter_vertical 作用相同,只是方向不同,只用于
   # ManyToManyField 类型的字段
   filter_horizontal = ['authors',] 
# 修改 admin 页面显示标题
admin.site.site_header = "Blog Manager System"
# 修改 admin 页面头部标题
admin.site.site_title = "Blog Manager"

点赞

0




登陆后方可评论