认识django2.0读书笔记(6)---第六章Django 站点管理

来源:互联网 发布:国信软件 编辑:程序博客网 时间:2024/06/07 03:51

文档下载地址: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 adminfrom mysite.books.models import Publisher,Author, Bookadmin.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 adminfrom 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 adminfrom 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、用户、组和权限

创建 许可,编辑 许可和删除 许可

 

随机展示一下过去按照教程进行设计的界面:



差不多就能得到上面的管理界面了,具体如何设置和显示,前面已经有方法。