django-站点管理
站点管理——超级用户的管理界面,可以让你添加,删除,管理网站内容;
一、激活管理界面
1、在settings.py中进行如下配置:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'books',
) MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
)
2、运行 python manage.py syncdb,生成管理界面额外的数据库表;(在Django 1.9及未来的版本种使用migrate代替syscdb.即:python manage.py migrate)
3、运行python manage.py createsuperuser来创建一个admin的用户账号;

4、配置url
from django.contrib import admin
admin.autodiscover() urlpatterns = [
url(r'^admin/', admin.site.urls),
]
5、启动服务器并且访问127.0.0.1:8000/admin/,登录之前设定的超级用户名和密码,然后可见:

6、在 MIDDLEWARE_CLASSES 中的 'django.contrib.sessions.middleware.SessionMiddleware', 之后添加 'django.middleware.locale.LocaleMiddleware', 就可以将页面上的语言类型翻译成你想要的语言,如下;
7、 接下来你可以根据引导查看、修改、删除、增加一些内容,这里就不一一解释了;接下来呢,我们要将我们的模块添加到管理工具中;上个例子中我们添加了三个模块:Auther,Publisher和Book;在books目录下打开名为admin.py的文件,然后输入以下代码:
# -*- coding:utf-8 -*- from django.contrib import admin
from books.models import Publisher,Author,Book
# Register your models here. #通知管理界面为这些模块逐一提供界面
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)
8、启动服务器并且访问127.0.0.1:8000/admin/,并且根据引导查看或操作一些内容:

9、如果我们想将一个字段设为可选(非必填)的,怎么办呢?比如说我们想将Anthor表中的email字段设成这种属性,只需这样做;
class Author(models.Model):
first_name = models.CharField(max_length= 30)
last_name = models.CharField(max_length= 40)
email = models.EmailField(blank= True) #设为可选,即可为空,其他的选项默认为False,不能为空
如果你要设置日期型,时间型和数字型等不接受空字符串的数据类型为可选(可以为空)的,那么就可以使用 null=True,以上两种可以一起使用,不过如果你要使用null=True,就要更新数据库;
10、如果说你觉得django默认的表名不够贴切,你想要改动的话(比如说将Author表中的‘email’字段改变为'e-mail')就可以这样:
email = models.EmailField(blank= True,verbose_name= 'e-mail')
或
email = models.EmailField('e-mail',blank= True)
后面 这一种方法不适用于MantToManyField和ForeignKey这样的字段,因为他们第一个参数必须是模块类,这样的话就必须显式地使用verbose_name这个参数名称
11、自定义ModelAdmi类
比如说我们查看Author表的时候显示为
;那我们想让email也显示怎么办呢:打开admin.py,并如下修改:
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name','last_name','email') #通知管理界面为这些模块逐一提供界面
admin.site.register(Author,AuthorAdmin)
刷新得到:

12、接下来我们在给Author添加一个搜索栏:如下:
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name','last_name','email')
search_fields = ('first_name','last_name')

13、之后,我们来为Book页创建一个过滤器:如下:
class BookAdmin(admin.ModelAdmin):
list_display = ('title','publisher','publication_date')#
list_filter = ('publication_date',) admin.site.register(Book,BookAdmin)

接下来,我们就可以在右边的日期过滤器中查看book列表;
另一种添加时间日期过滤器的方法为: date_hierarchy;如下;
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 = ('publisher',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)

14、接下来我们来实现自定义表单:,首先我们先自定义字段顺序,字段的顺序默认是和模块中定义的顺序一致的;接下来我们对其进行改变:
class BookAdmin(admin.ModelAdmin):
list_display = ('title','publisher','publication_date',)
list_filter = ('publisher',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
fields = ('title','publisher','authors')

除此之外呢,我们还可以改变针对多对多关系的选择方式,比如说anthors字段:(要先删除之前的fields)
filter_horizontal = ('authors',)


filter_horizontal类似的还有filter_vertical方法,区别只是水平排列和竖直排列的问题,但是filter_horizontal和filter_vertical只能用于多对多字段,不可以用于外键;而默认用下拉框来展示的外键,如果很多的话加载时间很大,我们可以用以下方法解决:
raw_id_fields = ('publisher',)

django-站点管理的更多相关文章
- django站点管理
一.启动django站点管理功能 1.关于django.contrib包 包含了django自带的众多附加组件,主要包括: 1)管理工具: django.contrib.admin 2)用 ...
- Django笔记 —— Admin(Django站点管理界面)
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- Django项目实践4 - Django站点管理(后台管理员)
http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...
- Django站点管理--ModelAdmin
class AuthorAdmin(admin.ModelAdmin): list_display=('name', 'age', 'sex') #指定要显示的字段 search_fields=('n ...
- django中的站点管理
所谓网页开发是有趣的,管理界面是千篇一律的.所以就有了django自动管理界面来减少重复劳动. 一.激活管理界面 1.django.contrib包 django自带了很多优秀的附加组件,它们都存在于 ...
- Django项目实践4 - Django网站管理(后台管理员)
http://blog.csdn.net/pipisorry/article/details/45079751 上篇:Django项目实践3 - Django模型 Introduction 对于某一类 ...
- django后台管理-ModelAdmin对象
Django最强大的部分之一是自动生成的管理后台界面. 它从你的模型中读取元数据,以提供一个快速的.以模型为中心的界面,信任的用户可以在这里管理你网站上的内容. 建议管理后台仅作为组织的一个内部管理工 ...
- CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...
- 《Python高效开发实战》实战演练——开发Django站点1
6.2 实战演练:开发Django站点 用Django开发网站需要遵循Django的一套开发流程.本节通过建立一个消息录入页面演示Django的开发流程及相关技术. 6.12.1 建立项目 在进行D ...
- xadmin站点管理类
9. Xadmin xadmin是Django的第三方扩展,比使用Django的admin站点更强大也更方便. 文档:https://xadmin.readthedocs.io/en/latest/i ...
随机推荐
- Java进阶篇(五)——Java的I/O技术
程序中,为了永久的保存创建的数据,需要将其保存在磁盘文件中,以便在其它程序中使用它们.Java的I/O技术可以将数据保存到文本文件.二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求. 本篇 ...
- char,varchar,nvarchar,text区别与联系
CHAR,NCHAR 定长,速度快,占空间大,需处理VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理NCHAR.NVARCHAR.NTEXT处理Unicode码
- MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- Markdown中使用mermaid画流程图
Markown语法简单,用来写文档是个不错的选择. 但是Markdown 语法并不直接支持画图,当然方法还是有的. 本人用的Markdown编辑器为vscode,在里面直接安装merdaid插件即可使 ...
- cJSON使用
cJSON是使用C语言编写的 关于JSON数据的 编解码库,使用方便简单 编译时注意后面要跟-lm参数,否则编译会报错 解析JSON数据包流程: 1.调用cJSON_Parse()函数,解析J ...
- Android更新主线程UI的两种方式handler与runOnUiThread()
在android开发过程中,耗时操作我们会放在子线程中去执行,而更新UI是要主线程(也叫做:UI线程)来更新的,自然会遇到如何更新主线程UI的问题.如果在主线程之外的线程中直接更新页面显示常会报错.抛 ...
- func_get_args 获取一个函数的所有参数
func_get_args 获取一个函数的所有参数 { $numargs = func_num_args(); //参数数量 echo "参数个数是: $numargs&l ...
- nagios 数据更新不及时的问题
配置nagios的时候发现一个问题,就是改变了某个主机或者服务的描述之后,在主页信息总是更新很慢,而且告警信息还是老的信息,重启多次 nagios甚至重启主机都没有解决,其实这些都是由于nagios每 ...
- 1.Tarball软件make与makefile详解(还需要补充)
*通常自己安装的软件放在 /usr/local/软件名 中,而将源文件放在/usr/local/src *为安装到单独目录的软件之 man page 加入 man path 搜寻: 如果你安装的软 ...
- python 将验证码保存到本地 读取 写入
#验证码 #读取验证码网址.打开本地路径.写入.输入验证码 downpicture = urllib.request.urlopen(SecretCodeUrl).read() local = ope ...