django站点管理详解


Posted in Python onDecember 12, 2017

管理界面是基础设施中非常重要的一部分。这是以网页和有限的可信任管理者为基础的界面,它可以让你添加,编辑和删除网站内容。Django有自己的自动管理界面。这个特性是这样起作用的:它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作。

Django的管理员模块是Django的标准库django.contrib的一部分。这个包还包括其它一些实用的模块:

django.contrib.auth

django.contrib.sessions

django.contrib.comments

我们分几个部分讲解django的管理界面(admin)的使用。

配置

其实admin的配置并不需要我们过多操心,在django创建项目和app的时候都会为我们自动创建,如果你不需要可以将其注释掉。如果要使用admin那么你需要检查以下几个点:

1.在INSTALLED_APPS设置文件中有

'django.contrib.admin'
'django.contrib.auth',
'django.contrib.contenttypes'
'django.contrib.sessions'

因为admin模块依赖

2.在MIDDLEWARE_CLASSES属性中有

'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware'
'django.contrib.auth.middleware.AuthenticationMiddleware'.

也是因为依赖

3.运行pythonmanage.pymakemigrations和pythonmanage.pymigrate,用于创建为admin等模块创建新的数据库表。

因为apps中有auth模块,会要求你创建一个超级用户。所以在此之前你可以使用pythonmanage.pycreatesuperuser命令创建一个超级用户。这个非常简单,根据提示输入就可以。

4.在urls.py中设置admin映射,这个一般也是系统为我们自动添加的。

from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
  #...
  (r'^admin/', include(admin.site.urls)),
  #...
)

完成以上步骤后,运行runserver你就可以通过/admin/这个url获取admin界面了。只不过这时候的admin界面除了用户和用户组之外没有其他的内容

admin.py文件

在每个app下系统会自动创建admin.py文件。这个文件的编写直接影响到admin界面的显示内容。

1.对model类进行注册

2.

from django.contrib import admin
from mysite.books.models import Publisher,Author, Book
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)

这是最基本的数据添加功能。当你在project文件夹中添加新的文件时,需要重启server才能生效。这样就会看到admin主界面中有了你定义的数据模型。此外如果想要你的admin界面中的添加数据功能生效,需要确保MIDDLEWARE_CLASSES中有'django.contrib.messages.middleware.MessageMiddleware'。这样我们就能够在admin界面很容易的操作数据库内容了,系统会自动同步到数据库。

自定义admin模块的显示

通过上面的设置虽然我们有了一个可以基本满足需求的admin界面,但是显示比较单一。基本显示内容的设置应该在models文件中。例如:

class Author(models.Model):
  first_name = models.CharField(max_length=30)
  last_name = models.CharField(max_length=40)
email =models.EmailField(blank=True)

只需要在字段声明中,设置blank=True,默认是False,就可以让email为空。

属性Field函数中的verbose_name可以控制这个字段在admin中以什么样的名字显示

Meta内部类中的verbose_name可以给模型起一个更可读的名字,ordering可以决定数据以什么排列方式显示。

__unicode__的返回值可以决定表在admin中以什么名字显示。

权限管理

因为你是用超级用户登录的,你可以创建,编辑和删除任何对像。然而,不同的环境要求有不同的权限,系统不允许所有人都是超级用户。管理工具有一个用户权限系统,通过它你可以根据用户的需要来指定他们的权限,从而达到部分访问系统的目的。

用户帐号应该是通用的、独立于管理界面以外仍可以使用。但我们现在把它看作是管理界面的一部分。在第十四章,我们将讲述如何把用户帐号与你的网站(不仅仅是管理工具)集成在一起。

你通过管理界面编辑用户及其许可就像你编辑别的对象一样。我们在本章的前面,浏览用户和用户组区域的时候已经见过这些了。如你所想,用户对象有标准的用户名、密码、邮箱地址和真实姓名,同时它还有关于使用管理界面的权限定义。首先,这有一组三个布尔型标记:

活动标志,它用来控制用户是否已经激活。如果一个用户帐号的这个标记是关闭状态,而用户又尝试用它登录时,即使密码正确,他也无法登录系统。

成员标志,它用来控制这个用户是否可以登录管理界面,由于用户系统可以被用于控制公众页面,这个标志可用来区分公众用户和管理用户。

超级用户标志,它赋予用户在管理界面中添加、修改和删除任何项目的权限。如果一个用户帐号有这个标志,那么所有权限设置(即使没有)都会被忽略。

普通的活跃,非超级用户的管理用户可以根据一套设定好的许可进入。管理界面中每种可编辑的对象(如:books、authors、publishers)都有三种权限:创建许可,编辑许可和删除许可。给一个用户授权许可也就表明该用户可以进行许可描述的操作。

当你创建一个用户时,它没有任何权限,该有什么权限是由你决定的。例如,你可以给一个用户添加和修改publishers的权限,而不给他删除的权限。请注意,这些权限是定义在模块级别上,而不是对象级别上的。据个例子,你可以让小强修改任何图书,但是不能让他仅修改由机械工业出版社出版的图书。

权限管理系统也控制编辑用户和权限。如果你给某人编辑用户的权限,他可以编辑自己的权限,这种能力可能不是你希望的。赋予一个用户修改用户的权限,本质上说就是把他变成一个超级用户。

你也可以给组中分配用户。一个组简化了给组中所有成员应用一套许可的动作。组在给大量用户特定权限的时候很有用。

总结

以上就是本文关于django站点管理详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python中非常实用的一些功能和函数分享
Feb 14 Python
利用Python演示数型数据结构的教程
Apr 03 Python
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
Python中自定义函数的教程
Apr 27 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
Python3.2中Print函数用法实例详解
May 19 Python
浅谈python中set使用
Jun 30 Python
python 文件操作api(文件操作函数)
Aug 28 Python
python字符串替换re.sub()实例解析
Feb 09 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
Python如何进行时间处理
Aug 06 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 Python
Django 生成登陆验证码代码分享
Dec 12 #Python
python+django加载静态网页模板解析
Dec 12 #Python
Django入门使用示例
Dec 12 #Python
django使用html模板减少代码代码解析
Dec 12 #Python
Python使用三种方法实现PCA算法
Dec 12 #Python
Java分治归并排序算法实例详解
Dec 12 #Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
Dec 12 #Python
You might like
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
php Undefined index的问题
2009/06/01 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
php实现数字补零的方法总结
2018/09/12 PHP
拖动一个HTML元素
2006/12/22 Javascript
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
jQuery实现级联菜单效果(仿淘宝首页菜单动画)
2014/04/10 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python搭建虚拟环境的步骤详解
2016/09/27 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
python用opencv 图像傅里叶变换
2021/01/04 Python
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
JBL英国官网:JBL UK
2018/07/04 全球购物
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
优秀求职自荐信怎样写
2013/12/18 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
目标责任书范文
2014/04/14 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
商场收银员岗位职责
2015/04/07 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
用python自动生成日历
2021/04/24 Python