您的位置:首页 > 编程语言 > Go语言

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

2017-10-25 17:15 435 查看
什么是Admin?

Admin是Django自带的一个功能强大的自动化数据管理界面(后台管理系统)

被授权的用户可直接在Admin中管理数据库

Django提供了许多针对Admin的定制功能(强大)

配置Admin

创建用户

1.cmd进去项目中,执行python manage.py createsuperuser输入用户名,邮箱 ,密码等信息。这里需要提醒注意的是密码不允许为12345678等等之类的简单的密码,可以使用自己的名字的全拼,效果如下图:



2.成功之后,打开浏览器,地址栏中输入localhost:8000/admin,可以看到如下界面



输入用户名密码即可进入

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.r
4000
egister(Article)  # 将模型类注册进来


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

修改数据

1.点击Article超链接进入Article列表页面(点击Blog–>Articles)如下图:



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的扩展



如上图所示,在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)


效果如下图所示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: