文档下载地址:Django_2.0_中文教程 http://download.csdn.net/detail/julius_lee/6620099
在线地址:http://djangobook.py3k.cn/2.0/
Django 2.0 Book 关键内容记录,主要是为了帮助记忆和理清整个框架,同时以后忘了可以查看,回想。
1、 django.contrib包
Django 基本代码的组成部分,是对python标准库和普遍模式的实际表现
2、 激活管理界面
1) 修改settings.py文件
确保django.contrib.admin/sessions/auth/contenttypes 已加入到INSTALL_APPS中;
确保MIDDLEWARE_CLASSES包含django.middleware.common.CommonMiddleware,django.contrib.sessions.middleware.SessionMiddleware ,django.contrib.auth.middleware.AuthenticationMiddleware.(一般默认就可以了)
实际中创建项目后一般都如下:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
2) 运行 python manage.py sysncdb,生成管理界面数据表;
3) 将admin访问配置在urls.py中,取消默认的注释:(r'^admin/', include(admin.site.urls)),
这样配置就完成了。
3、 使用管理工具
1)浏览器地址栏中输入runserver后的地址和端口进行登录;
2)设置语言:若显示的英语,需要显示中文,则可以更改mysite目录中settings.py中的语言和地区如下:
LANGUAGE_CODE = 'zh-cn'
TIME_ZONE = 'Asia/Shanghai'
这样时间和语言都变成本地的了
4、 加入Models到Admin管理中
在books目录下创建admin.py文件,导入:
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)
5、 admin工作方式
服务启动后,url.py引导URLconf,执行admin.autodiscover(),遍历INSTALL_APPS配置,寻找app目录中的admin.py文件,找到后调用admin.site.register()注册模块到管理工具,然后由管理工具进行显示;
6、 设置字段可选
即允许某些内容不填写
只需修改books/models.py文件
示例:
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(**blank=True** )#改空白为true
这样email处就可以选填了
7、 设置日期或数字型字段可选
特殊原因:SQL中NULL不同于空字符串,不接受空字符串。NULL是指定空值的唯一方法
示例:
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField(**blank=True, null=True** )#可以为空
8、 自定义字段标签
在编辑页面中,字段的标签由模块的字段名称生成。
规则:空格替换下划线,首字母大写,例如:Book模块中publication_date的标签是Publication date
可以在模块中指定verbose_name来自定义
示例:
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True, **verbose_name='e-mail'** )#django会自动大写verbose的name。
9、 自定义列表
示例:显示姓名
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True, verbose_name='e-mail')
**def __unicode__(self):**
**return u'%s %s' % (self.first_name, self.last_name)**#显示每个作者的姓名
示例:显示作者列表
给author模块定义一个ModelAdmin类,修改admin.py如下:
from django.contrib import admin
from mysite.books.models import Publisher,Author, Book
**class AuthorAdmin(admin.ModelAdmin):**
**list_display = ('first_name', 'last_name', 'email')**#这样,括号中的内容都会在界面显示出来
admin.site.register(Publisher)
**admin.site.register(Author,AuthorAdmin)**#注册
admin.site.register(Book)
示例:创建查询栏
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email')
**search_fields = ('first_name', 'last_name')**#这样就可以按名字进行搜索了
示例:创建过滤器
from django.contrib import admin
from mysite.books.models import Publisher,Author, Book
class AuthorAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email')
search_fields = ('first_name', 'last_name')
**class BookAdmin(admin.ModelAdmin):**#这样右边就会显示标题,出版社,日期等过滤器了
**list_display = ('title', 'publisher', 'publication_date')**
**list_filter = ('publication_date',)**
admin.site.register(Publisher)
admin.site.register(Author, AuthorAdmin)
**admin.site.register(Book, BookAdmin)**
示例:修改排序方式
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
**ordering = ('-publication_date',)**#这样就可以按发布日期进行排序了
10、自定义编辑表单
示例:按指定字段顺序显示
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
**fields = ('title', 'authors', 'publisher', 'publication_date')**#则会按照这个顺序进行排列,去掉括号中的对应内容,则去掉内容在页面中就会无法改动。
示例:自定义是多对多字段,即一个作者含多本书
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'publisher', 'publication_date')
list_filter = ('publication_date',)
date_hierarchy = 'publication_date'
ordering = ('-publication_date',)
**filter_horizontal = ('authors',)**#水平显示选择框
这样做的结果是点击后,浏览器会单独弹出一个窗口,让用户作出选择
对应还有filter_vertical,可以垂直显示
11、用户、组和权限
创建 许可,编辑 许可和删除 许可
随机展示一下过去按照教程进行设计的界面:
差不多就能得到上面的管理界面了,具体如何设置和显示,前面已经有方法。
本文来自博客园,作者:{Julius},转载请注明原文链接:https://www.cnblogs.com/bestechshare/p/16447742.html
可微信加我,了解更多,WeChat:{KingisOK}