Django项目创建之---Admin及过滤器的实现(四)

什么是Admin?
Admin是Django自带的一个功能强大的自动化数据管理界面(后台管理系统)
被授权的用户可直接在Admin中管理数据库
Django提供了许多针对Admin的定制功能(强大)


配置Admin
创建用户
1.cmd进去项目中,执行python manage.py createsuperuser输入用户名,邮箱 ,密码等信息。这里需要提醒注意的是***密码不允许为12345678等等之类的简单的密码***,可以使用自己的名字的全拼,效果如下图:
Django项目创建之---Admin及过滤器的实现(四)_第1张图片
2.成功之后,打开浏览器,地址栏中输入localhost:8000/admin,可以看到如下界面
Django项目创建之---Admin及过滤器的实现(四)_第2张图片
输入用户名密码即可进入

3.此时,可以看到进入后的界面都是英文,如果想修改为中文,我们可以进入项目的settings.py中修改

LANGYAGE_CODE = ‘zh_Hans’

然后刷新页面就可以看到中文界面了。


配置应用
1.在应用下admin.py中引入自身的models模块(或里面的模型类)
2.编辑admin.py,代码如下:

from django.contrib import admin

from .models import Article

admin.site.register(Article)  # 将模型类注册进来

在这里,需要特别强调一下,修改admin.py的时候,只是写from models import Article 会报错找不到models,所以需要改成.models或者blog.models才可以


修改数据
1.点击Article超链接进入Article列表页面(点击Blog–>Articles)如下图:
Django项目创建之---Admin及过滤器的实现(四)_第3张图片
2.点击任意一条数据,进入编辑页面修改
3.编辑页面下方一排按钮可执行响应的操作


扩展
从图中可以看出,ARTICLE列表中显示的是Article Object,这个标题并不是我们数据库表中对应的数据,因此很不方便使用。

为什么会显示成Article Object?因为Article Article Object是类的一个实例对象,它是类实例的默认名称怎么修改Article Object为对应的数据?
在Article类下添加一个方法,根据Python版本选择:
如果使用的是Python3.X,则使用__str__(self)__
如果使用的是Python2.X,则使用 unicode(self)
之后return self.title.
models.py代码如下:

from __future__ import unicode_literals

from django.db import models

from django.db.models import Model

class Article(models.Model):
    title = models.CharField(max_length=32, default='Title')  # max_length为约束长度,default为默认值
    content = models.TextField(null=True)  # null=True为允许为空

    def __str__(self):
        return self.title

刷新页面,列表数据已成功修改。


Admin的扩展
Django项目创建之---Admin及过滤器的实现(四)_第4张图片
如上图所示,在Admin中的Article列表中,我们只能看到一列标题的内容,可是如果我们想显示多列信息(其他字段)要如何操作呢 ?
实现步骤
创建admin配置类:
1.class ArticleAdmin(admin.ModelAdmin)
2.注册admin.site.register(Article, ArticleAdmin)
3.显示其他字段,使用list_dislplay,它同时支持tuple和list
admin.py代码如下:

from django.contrib import admin

from .models import Article


class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'content')


admin.site.register(Article, ArticleAdmin)

admin的过滤器的实现
1.自行在models.py中的Article类中添加pub_time字段,如下
pub_time = models.DateTimeField(null=True),然后执行python manage.py makemigrations和python manage.py migrate做数据迁移
2.使用list_filter,修改后的admin.py代码如下:

from django.contrib import admin

from .models import Article


class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'content', 'pub_time')
    list_filter = ('pub_time', )  # 因为这里使用的是tuple,所有当括号里只有一个成员的时候也必须加上末尾的“,”


admin.site.register(Article, ArticleAdmin)

效果如下图所示
Django项目创建之---Admin及过滤器的实现(四)_第5张图片

你可能感兴趣的:(Python学习)