Django学习笔记-站点管理
django.contrib
Django自动管理工具是django.contrib的一部分。django.contrib是一套庞大的功能集,它是Django基本代码的组成部分,Django框架就是由众多包含附加组件(add-on)的基本代码构成的。
管理工具是本书讲述django.contrib的第一个部分。从技术层面上讲,它被称作django.contrib.admin。django.contrib中其它可用的特性,如用户鉴别系统(django.contrib.auth)、支持匿名会话(django.contrib.sessioins)以及用户评注系统(django.contrib.comments)。
激活管理界面
第一步:
settings文件中:
INSTALLED_APPS中包含:
‘django.contrib.admin’
‘django.contrib.auth’
‘django.contrib.contenttypes’
‘django.contrib.sessions’MIDDLEWARE_CLASSES中包含:
‘django.middleware.common.CommonMiddleware’
‘django.contrib.sessions.middleware.SessionMiddleware’
‘django.contrib.auth.middleware.AuthenticationMiddleware’
第二步:
创建超级用户,将’django.contrib.auth’加入到INSTALLED_APPS后,才可使用如下命令进行创建:
python manage.py createsuperuser
注意:
在本例中,我们通过上述命令创建了一个超级用户,用户名是admin,密码是4062324zane
第三步:
在urls.py文件中把URLconf的admin路径注释去掉,保证内容存在:
# Include these import statements...
from django.contrib import admin
admin.autodiscover()
# And include this URLpattern...
urlpatterns = patterns('',
# ...
(r'^admin/', include(admin.site.urls)),
# ...
)
管理工具
在Django管理也中,每一种数据类型都有一个change list和edit list
- change list:显示数据库中所有的可用对象
- edit list:可以添加、更改和删除数据库中的记录
添加其他语言
如果母语不是英语,可以添加本地语言配置,需要在settings.py中添加:
‘django.middleware.locale.LocaleMiddleware’
但是一定要保证它必须是在’django.contrib.sessions.middleware.SessionMiddleware’之后。
编辑用户信息
在管理页面中点击【用户】进入用户信息详细配置页面,在这个页面中可以对用户的全部信息进行配置,即相当于操作数据库中的auth_user表。
注意:
如果要修改用户的密码,必须点击密码字段下的“这个表单(change password form)”,而不是直接更改字段值中的哈希码。
将自定义的Models加入到Admin管理中
在mysite/books目录下的admin.py文件中增加如下内容:
from django.contrib import admin
from books.models import Publisher, Author, Book
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)
注意:
需要重新启动runserver才能生效;
在Add book页面中
http://127.0.0.1:8000/admin/books/book/add/
,外键publisher是用一个选择框显示,多对多字段author用一个多选框显示,点击两个字段后的绿色加号,可以添加相关记录。
Admin是如何工作的
当服务启动后,Django从urls.py引导URLConf,然后执行admin.autodiscover()语句,这个函数遍历INSTALLED_APPS配置,并且存在相关的admin.py文件,如果在指定的APP目录下找到admin.py,它就执行其中的代码。
在books应用程序目录下的admin.py文件中,每次调用admin.site.register()都将那个模块注册到管理工具中。
管理工具之为明确注册的模块显示一个编辑/修改界面。
应用程序django.contrib.auth包含自身的admin.py,所以Users和Groups能在管理工具中自动显示,其他的django.contrib应用程序,如django.contrib.redirects,其它从网上下载的第三方Django应用程序也一样,都会自行添加到管理工具。
综上所述,管理工具其实就是一个Django应用程序,包含自己的模块、模板、视图和URLpatterns。可以在/usr/local/lib/python2.7/dist-packages/django/contrib/
目录下查看它的模板、视图、URLpatterns。
设置字段可选
如果想指定某个字段为可选,只需要修改models.py文件,在指定字段上加上blank=True即可:
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True)
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
注意:
所有字段都默认blank=False,默认不允许输入空值。
设置日期型和数字型字段可选
SQL指定空值叫做NULL,NULL可以表示为未知的、非法的、或其它程序指定的含义,NULL不等于空字符串,就像Python中None不同于空字符串一样。
这意味着某个字符型字段(eg:VARCHAR)的值不可能同时包含NULL和空字符串。
Djanog为了消除歧义,在CREATE TABLE语句时自动为每个字段显式加上NOT NULL:
CREATE