激活管理界面(django.contrib.admin)

django.contrib中其它可用的特性,如用户鉴别系统(django.contrib.auth)、支持匿名会话(django.contrib.sessioins)以及用户评注系统(django.contrib.comments)。


1、setting配置

INSTALLED_APPS#自行添加'django.contrib.admin'

INSTALLED_APPS#确保存在Django的管理工具需要这3个包'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'。


2、模型安装

这是1.9版本的命令

$pythonmanage.pymakemigrationsbooks表示保存更改到一个migration中,这都是文件$pythonmanage.pysqlmigratebooks0001表示执行一个migrations,并返回他们的SQL--App_01/migrations/0001_initial.py$pythonmanage.pymigrate执行变更$pythonmanage.pyshell可进入配置数据库--$pythonmanage.pycreatesuperuser创建一个超级用户

这时1.9版本以前的命令

pythonmanage.pyvalidate检查你的模型的语法和逻辑pythonmanage.pysqlallbooks生成CREATETABLE语句pythonmanage.pysyncdb提交SQL语句至数据库pythonmanage.pydbshell可进入数据库交互(sql语句)pythonmanage.pyshell带环境的python交互frombooks.modelsimportPublisher可在此对数据库操作p1=Publisher(name='Apress',address='2855Telegrap....................p1.save()sql会执行一条INSERT语句


3、将admin添加 URLconf


1.9版本

fromdjango.conf.urlsimporturlfromdjango.contribimportadminfrombooksimportviewsurlpatterns=[url(r'^admin/',admin.site.urls),]

1.9以前的

#Includetheseimportstatements...fromdjango.contribimportadminadmin.autodiscover()#AndincludethisURLpattern...urlpatterns=patterns('',#...(r'^admin/',include(admin.site.urls)),#...)



4、更改admin管理界面语言

MIDDLEWARE_CLASSES#更改django的语言setting.py'django.contrib.sessions.middleware.SessionMiddleware'.'django.middleware.locale.LocaleMiddleware'

5、注册模型

将模型中定义的数据类型,注册到admin.py中,就可以通过admin管理界面操作

fromdjango.contribimportadminfrommysite.books.modelsimportPublisher,Author,Bookadmin.site.register(Publisher)admin.site.register(Author)admin.site.register(Book)






设置可选字段

为了指定email字段为可选,你只要编辑Book模块(它在mysite/books/models.py文件里),在email字段上加上blank=True。

(默认blank=False),但有些数据指空(字符串)会错误如:日期型、时间型和数字型字段,那么只能用NULL指空

classBook(models.Model):title=models.CharField(max_length=100)authors=models.ManyToManyField(Author)publisher=models.ForeignKey(Publisher)publication_date=models.DateField(**blank=True,null=True**)

自定义字段标签

classAuthor(models.Model):#指定verbose_name将Author.email的标签改为e-mailemail=models.EmailField(blank=True,**verbose_name='e-mail'**)