Django学习day8——admin后台管理和语言适应
Django最大的优点之一,就是体贴的为你提供了一个基于项目model创建的一个后台管理站点admin。这个界面只给站点管理员使用,并不对大众开放。
1. 创建管理员用户
(django) E:\Django\mysite>python manage.py createsuperuser
Username (leave blank to use 'administrator'): #输入管理员名字
Email address:输入邮箱,可为空#
Password:#密码
Password (again):#再一次输入密码
Superuser created successfully.
创建完成以后开启django服务了,访问http://127.0.0.1:8000/admin/ 出现如下
输入账号密码,你就可以登录django后台了
它仅有两个默认的管理-编辑模块:用户组(Groups)和用户(Users)。
Django设置后台中文面板和时区
Django还有一个很棒的功能,它自带了多种语言的翻译
在settings.py的MIDDLEWARE_CLASSES 下,最后一行添加'django.middleware.locale.LocaleMiddleware',即可显示中文的后台界面
除此之外我们还要设置一下时间的同步,在settings.py中修改以下这两个配置
TIME_ZONE = 'Asia/Shanghai' USE_TZ = False
USE_TZ设置为True时,Django会使用系统默认设置的时区,即America/Chicago,我们要设置为False
TIME_ZONE = 'Asia/Shanghai'即为上海UTC时间
现在我们进入用户下的管理员你会发现时间已经是上海UTC时间了,不会显示相差8小时了
将你的Models加入到Admin管理中
打开myapp下的admin.py设置如下
from django.contrib import admin
from myapp.models import Publisher, Author, Book admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)
这些代码通知管理工具为这些模块逐一提供界面。
刷新一下后台你会发现多了一个app项和一些列表,这些都是你在模型中定义的数据
自定义列表
这个页面应该提供便利,比如说:在这个列表中可以看到作者的邮箱地址。如果能按照姓氏或名字来排序,那就更好了。
为了达到这个目的,我们将为Author模块定义一个ModelAdmin类。 这个类是自定义管理工具的关键,其中最基本的一件事情是允许你指定列表中的字段。 打开admin.py并修改:
class AuthorAdmin(admin.ModelAdmin):
list_display = ('email','first_name', 'last_name') admin.site.register(Publisher)
admin.site.register(Author,AuthorAdmin)
admin.site.register(Book)
解释一下代码:
我们新建了一个类AuthorAdmin,它是从django.contrib.admin.ModelAdmin派生出来的子类,保存着一个类的自定义配置,以供管理工具使用。 我们只自定义了一项:list_display, 它是一个字段名称的元组,用于列表显示。 当然,这些字段名称必须是模块中有的。
我们修改了admin.site.register()调用,在Author后面添加了AuthorAdmin。你可以这样理解: 用AuthorAdmin选项注册Author模块。
admin.site.register()函数接受一个ModelAdmin子类作为第二个参数。 如果你忽略第二个参数,Django将使用默认的选项。Publisher和Book的注册就属于这种情况。
这时你发现在每个列上都可以点击进行排序了
快速查询栏
向AuthorAdmin追加search_fields,如:
class AuthorAdmin(admin.ModelAdmin):
list_display = ('email','first_name', 'last_name')
search_fields = ('first_name', 'last_name')#追加的
这时的anthor出现了一个搜索框,可以搜索匹配的 first_name 和 last_name信息
过滤器
Django为日期型字段提供了快捷过滤方式,它包含:今天、过往七天、当月和今年。这些是开发人员经常用到的。
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)#这里要以元组添加,不能去掉末尾的的逗号,否则报错
过滤器如下图显示:
另外一种过滤日期的方式是使用date_hierarchy选项,如:
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
效果如下:
修改好后,页面中的列表顶端会有一个逐层深入的导航条, 它从可用的年份开始,然后逐层细分到月乃至日。
改变默认的排序方式
例如按publication date降序排列:
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
效果如下:(右上角多了一个小箭头显示排序)
自定义编辑表单
更改编辑顺序
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
fields = ('publisher', 'title', 'authors', 'publication_date')#这里我们更换了编辑表单的顺序
效果如下:
隐藏编辑字段
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
fields = ('publisher', 'title', 'authors')#这里少了publication_date字段,我们将不会在表单编辑中看到
效果如下:
因为我们在模型中设置了null=True,所以Django会将publication_date设置为None,以确保这个字段满足null=True的条件。
表单多选框过滤器
管理站点将每个ManyToManyField表示为多选框,这是最合乎逻辑的HTML输入小部件,但多选框可能很难使用。
我们使用filter_horizontal解决这个问题:
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
fields = ('title','publisher', 'authors')
filter_horizontal = ('authors',)#需要填入一个元组,注意最后要逗号
效果如下:
你会看到Authors中有一个精巧的JavaScript过滤器,它允许你检索选项,然后将选中的authors从Available框移到Chosen框,还可以移回来。
ModelAdmin类还支持filter_vertical选项。 它像filter_horizontal那样工作,除了控件都是垂直排列,而不是水平排列的。 至于使用哪个,只是个人喜好问题。
filter_vertical效果图:
filter_horizontal 和 filter_vertical选项只能用在多对多字段 上, 而不能用于 ForeignKey字段。
下拉框改为文本框
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
fields = ('title','publisher', 'authors')
filter_vertical = ('authors',)
raw_id_fields = ('publisher',)#将publisher外键的下拉框改为文本框
效果如下:
你在这个输入框里输入什么? 发布者的数据库ID。 鉴于人类通常不会记住数据库ID,还有一个放大镜图标,您可以单击以拉出弹出窗口,您可以从中选择要添加的发布者。
Django学习day8——admin后台管理和语言适应的更多相关文章
- Django学习手册 - admin后台 切换成中文显示/添加数据表
Django admin后台管理 切换成中文界面: 站点显示为中文: 在setting 里面修改 LANGUAGE_CORE = 'zh-Hans' 字段名显示中文 class Test(models ...
- Linux下开发python django程序(设置admin后台管理模块)
1.新建项目和项目下APP django-admin startproject csvt03 django-admin startapp app1 2.修改settings.py文件 设置默认安装AP ...
- Linux下开发python django程序(设置admin后台管理上传文件和前台上传文件保存数据库)
1.项目创建相关工作参考前面 2.在models.py文件中定义数据库结构 import django.db import modelsclass RegisterUser(models.Model) ...
- Django学习:创建admin后台管理站点
Django自带一个后台管理站点,方便我们管理数据.这个界面只给管理员使用,并不对大众开放. 创建管理员用户 py manage.py createsuperuser 如下图所示: 用户名不填的话,默 ...
- Django Admin后台管理模块的使用
Admin后台管理模块的使用 Django的管理员模块是Django的标准库django.contrib的一部分.这个包还包括其它一些实用的模块: django.contrib.auth django ...
- 第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍
第三百七十八节,Django+Xadmin打造上线标准的在线教育平台—django自带的admin后台管理介绍 配置django的admin数据库管理后台 首先urls.py配置数据库后台路由映射,一 ...
- django的admin后台管理
Admin后台管理 要进入admin后台管理首先要创建管理员账户 createsuperuser 其中密码要大于8位 使用之前要到应用下的admin.py中注册要管理的模型表 from django. ...
- Django框架admin后台管理和用户端静态文件
目录 一.admin后台管理 1. 如何使用 2. 路由分发的本质 二.用户上传的静态文件的展示 1. media配置 2. 手动开设media接口 三.图片防盗链 一.admin后台管理 djang ...
- python测试开发django-17.admin后台管理
前言 通常一个网站开发,需要有个后台管理功能,比如用后台管理发布文章,添加用户之类的操作.django的admin后台管理主要可以实现以下功能 基于admin模块,可以实现类似数据库客户端的功能,对数 ...
随机推荐
- Akka实现WordCount(Scala)
Akka实现WordCount(Scala): 架构图: 项目结构: pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- python selenium单/复选框操作
一.单选:radio 1.首先是定位选择框的位置 2.定位id,点击图标就可以了,代码如下(获取url地址方法:把上面源码粘贴到文本保存为.html后缀后用浏览器打开,在浏览器url地址栏复制出地址就 ...
- 前端工程师如何理解 TCP/IP 传输层协议?
网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别. TCP/IP网络模型 计算机与网络设备要相 ...
- [JOYOI1510] 专家复仇 - Floyd
题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目背景 外星人完成对S国的考察后,准备返回,可他们的飞碟已经没燃料了……S国的专家暗自窃喜 ...
- gitlab 提交
gitlab 提交 Git global setup git config --global user.name "lial" git config --global user.e ...
- pytest2-收集与执行测试用例规则
pytest收集测试用例规则 测试文件以test_开头(以_test结尾也可以) 测试类以Test开头,并且不能带有 init 方法 测试函数以test_开头(以_test结尾也可以) pytest执 ...
- OSI七层模型和五层TCP/IP协议
1.查公网ip的方法: windows,打开浏览器,访问百度,搜IP即可 linux:curl ifconfig.me 2.OSI七层模型 ==网络工程师:== 物理层 1层,通信介质的信号到数字信号 ...
- JDK路径配置,tomcat可以直接启动
path classpath java_home 修改tomcat配置文件,直接写入jdk路径,不推荐
- Jedis运用scan删除正则匹配的key
jedis运用scan删除正则匹配的key 我们都知道用keys *进行查询key的时候会进行堵塞,导致redis整体不可用,而使用scan命令则不会. RedisServiceImpl中sca ...
- 百万年薪python之路 -- MySQL数据库之 存储引擎
MySQL之存储引擎 一. 存储引擎概述 定义: 存储引擎是mysql数据库独有的存储数据.为数据建立索引.更新数据.查询数据等技术的实现方法 首先声明一点: 存储引擎这个概念只有MySQL才有. ...