Django中Admin的使用

admin是django强大功能之一,它能从数据库中读取数据,呈现在页面中,进行管理。


创建超级用户

在你所在的django项目路径下,输入代码:

python manage.py createsupersuer

接下来,按照提示填写用户名,邮箱(可以为空),密码,确认密码,这样我们就成功的创建好了一个超级用户。

之后,我们运行我们的项目:

python mannage.py runserver 4000

这时在你的浏览器输入localhost:4000/admin/,就会弹出这样的界面。
mark
在里面输入你的账号密码,就可以进入django的管理界面:
mark
我们发现django已经给我们写好了用户组和用户的数据库,在这个页面可以用来添加用户和用户组。

注册数据库到admin

使用register方法

首先,在admin.py下导入所有的数据库

from blog.models import *

接下来,将想要显示在admin中的数据库注册到admin

admin.site.register(UserInfo1)
admin.site.register(UserType1)

使用register装饰器

在你自定义的子类上面添加装饰器,表明这里的自定义内容时对应你的哪张表的。

@admin.register(UserInfo1)
class MyAdmin(admin.ModelAdmin):
pass

刷新我们的网页,就可以看到我们自己建的数据库了
mark

添加其他功能

修改表单显示

mark
默认这里显示的都是UserInfo1,根本看不出,更不谈管理,那么我们如何修改这里显示的内容呢

很简单,在我们在models中创建表格的时候,自定义一个__str__函数,就可以自定义显示字段。

def __str__(self):
return self.username

mark

修改表单显示多个字段

这需要我们在admin中创建一个admin.ModelAdmin的子类,然后在注册表单的时候,将这个参数加上就可以了。

class MyAdmin(admin.ModelAdmin):
list_display = ("username", "age", "user_type")

admin.site.register(UserInfo1, MyAdmin)

刷新页面,发现我们想要的已经显示出来了
mark

添加搜索功能

数据量不大的时候,找想要的很方便,但数据量增大的时候,查找功能就必不可少了。
添加方法,和上面一样在子类里面添加

search_fields = ("username","user_type")

右侧的参数,则是添加查找内容的范围。

添加筛选功能

list_filter = ('username', )

mark

其他需求

修改语言为中文

在settings里面将LANGUAGE_CODE字段的值改为zh-hans

LANGUAGE_CODE = 'zh-hans'

用户权限控制

定制加载的列表, 根据不同的人显示不同的内容列表。

例如:如果是超级管理员就列出所有的,如果不是,就仅列出访问者自己相关的。

class MyModelAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(MyModelAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
else:
return qs.filter(author=request.user)


——— 未完待续 ———


-------------本文结束感谢您的阅读-------------