网站开发与数据库,报价网站制作,秒玩小游戏点击即玩入口,制作二维码网站免费Django最大的优点之一#xff0c;就是体贴的提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用#xff0c;并不对大众开放。虽然admin的界面可能不是那么美观#xff0c;功能不是那么强大#xff0c;内容不一定符合你的要求#xff0c;但是…Django最大的优点之一就是体贴的提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用并不对大众开放。虽然admin的界面可能不是那么美观功能不是那么强大内容不一定符合你的要求但是它是免费的、现成的并且还是可定制的有完善的帮助文档. 如果对admin的界面美观有切实需求可以尝试使用simpleui库不要用xadmin.
创建管理员用户
首先我们需要通过下面的命令创建一个可以登录admin站点的用户 python manage.py createsuperuser 输入用户名 Username: admin 输入邮箱地址 Email address: xxxxxx.xxx 输入密码 Password: ********** Password (again): ********* Superuser created successfully. 注意Django1.10版本后超级用户的密码要求具备一定的复杂性如果密码强度不够Django会提示你但是可以强制通过。
启动开发服务器
执行runserver命令启动服务器后在浏览器访问http://127.0.0.1:8000/admin/。你就能看到admin的登陆界面了 小技巧: 在实际环境中为了站点的安全性我们一般不能将管理后台的url随便暴露给他人不能用/admin/这么简单的路径。
可以将根url路由文件mysite/urls.py中admin.site.urls对应的表达式换成你想要的
比如
from django.contrib import admin from django.urls import path
urlpatterns [ path(control/, admin.site.urls),
] 这样我们必须访问http://127.0.0.1:8000/control/才能进入admin界面。
进入站点
利用刚才建立的admin账户登陆admin你将看到如下的界面 当前只有两个可编辑的模型Groups和Users。它们是django.contrib.auth模块提供的身份认证框架内的模型。
注册app
现在还无法看到投票应用必须先在admin中进行注册告诉admin站点请将polls的模型加入站点内接受站点的管理。
打开polls/admin.py文件加入下面的内容
from django.contrib import admin
from .models import Questionadmin.site.register(Question)站点体验
注册question模型后等待服务器重启动然后刷新admin页面就能看到Question栏目了。 这里需要注意的是
页面中的表单是由Question模型自动生成的。不同的模型字段类型(DateTimeField, CharField)会表现为不同的HTML input框类型。每一个DateTimeField都会自动生成一个可点击链接。日期是Today并有一个日历弹出框时间是Now并有一个通用的时间输入列表框。
在页面的底部则是一些可选项按钮
delete弹出一个删除确认页面save and add another保存当前修改并加载一个新的空白的当前类型对象的表单。save and continue editing保存当前修改并重新加载该对象的编辑页面。save保存修改返回当前对象类型的列表页面。
如果Date published字段的值和你在前面教程创建它的时候不一致可能是你没有正确的配置TIME_ZONE在国内通常是8个小时的时间差别。修改TIME_ZONE配置并重新加载页面就能显示正确的时间了。 自定义 admin Django的admin站点是自动生成的、高度可定制的它是Django相较其它Web框架独有的内容广受欢迎。如果你觉得它不够美观还有第三方美化版simpleUI。请一定不要忽略它相信我它值得拥有
自定义后台表单 通过admin.site.register(Question)语句我们在admin站点中注册了Question模型。Django会自动生成一个该模型的默认表单页面。如果你想自定义该页面的外观和工作方式可以在注册对象的时候告诉Django你的自定义选项。
下面是一个修改admin表单默认排序方式的例子。修改appName/admin.py的代码
from django.contrib import admin
from .models import Questionclass QuestionAdmin(admin.ModelAdmin):fields [pub_date, question_text]admin.site.register(Question, QuestionAdmin)你只需要创建一个继承admin.ModelAdmin的模型管理类在其中进行一些自定义操作然后将它作为第二个参数传递给admin.site.register()第一个参数则是Question模型本身。
上面的修改让Date Published字段显示在Question字段前面了默认是在后面。
对于只有2个字段的情况效果看起来还不是很明显但是如果你有很多的字段选择一种直观的符合我们人类习惯的排序方式则非常有用。
但是当表单含有大量字段的时候你更多的是想将表单划分为一些字段的集合。