`

Django(Chapter06 Django站点管理)

阅读更多
1. Django自动管理工具是django.contrib的一部分。
   管理工具,从技术层面上讲,它被称作django.contrib.admin。
   django.contrib中其它可用的特性,如用户鉴别系统(django.contrib.auth), 支持
   匿名会话(django.contrib.sessioins)以及用户评注系统
   (django.contrib.comments)。

2. 激活管理界面
   $ pwd
   /home/tony/djcode/mysite
   $ vim settings.py
  
    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',    
        'django.contrib.sites',       
        'django.contrib.messages',    
        'django.contrib.staticfiles', 
        # Uncomment the next line to enable the admin:
        'django.contrib.admin',                       
        # Uncomment the next line to enable admin documentation:
        'django.contrib.admindocs',                             
        'mysite.books',                                         
    )     
   


  
    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        #'django.middleware.locale.LocaleMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',           
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',   
    ) 
   


   生成管理界面使用的数据库表:
  
    $ python manage.py syncdb
   


   创建一个admin的用户帐号:
  
    $ python manage.py createsuperuser
   


   将admin访问配置在URLconf(在urls.py中):
   $ vim urls.py
  
    from django.conf.urls.defaults import patterns, include, url   
    # Uncomment the next two lines to enable the admin:
    from django.contrib import admin                   
    admin.autodiscover()                               

    urlpatterns = patterns('',
        # Uncomment the admin/doc line below to enable admin  
            documentation:
        (r'^admin/doc/', include('django.contrib.admindocs.urls')),
        # Uncomment the next line to enable the admin:
        (r'^admin/', include(admin.site.urls)),
    )
   


   启动开发服务器
   $ python manage.py runserver 8080

   访问:
   http://localhost:8080/admin/

3. 配置本地化语言显示:
   $ vim settings.py
  
    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        # 添加了这句话,界面可以显示中文了
        'django.middleware.locale.LocaleMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',           
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',   
    )     
   

  
4. 将自己的Models添加到Admin管理中:
   $ cd books
   $ pwd
   /home/tony/djcode/mysite/books
   $ vim 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)
   

  
   重启服务
   $ CTRL + C
   $ python manage.py runserver 8080

   访问:
   http://localhost:8080/admin/
   发现Books已经被添加了进来。

5. 设置字段可选:
   例Authors:
   $ vim models.py
  
    class Author(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=40)
        # 建对象时,指定了email,blank=True, null=True,即这个字段是可选的
        email = models.EmailField(blank=True, null=True,)

        def __unicode__(self):
            return u'%s%s'% (self.first_name, self.last_name)
   

   一般情况下blank=Ture就可以指明字段是可选的,但对于日期型(DateField,
   TimeField, DateTimeField)或数字型(IntegerField,DecimalField,
   FloatField)需要使用null=True和blank=True。

6. 自定义字段标签
   $ vim models.py
  
    class Author(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=40)
        # 建对象时,指定了verbose_name, 那么在admin那边显示的会是
        # verbose_name中指定的名字,而不再是Email。
        email = models.EmailField(blank=True, null=True, \
                 verbose_name='e-mail')
   

   重启服务器,发现修改生效。

7. 自定义列表:
   $ vim admin.py
  
    from django.contrib import admin             
    from mysite.books.models import Publisher, Author, Book

    class AuthorAdmin(admin.ModelAdmin):
        # 显示了list_display里面的几列
        list_display=('first_name', 'last_name', 'email')
 
    class BookAdmin(admin.ModelAdmin):
        list_display=('title', 'publisher', 'publication_date',)

    admin.site.register(Publisher)
    admin.site.register(Author, AuthorAdmin)
    admin.site.register(Book,BookAdmin)
   

   刷新页面,发现Author显示了3列,不再是当初的一列了。

   添加快速查询栏
   $ vim admin.py
  
    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 过滤器
        list_filter = ('publication_date',)
   

  
   另一种过滤器:
  
    class BookAdmin(admin.ModelAdmin):
        list_display=('title', 'publisher', 'publication_date',)
        list_filter = ('publication_date',)
        # date_hierachy 发现了页面的头部多了一个时间的过滤器
        date_hierarchy = 'publication_date'
   


   改变默认的排序方式:
  
    class BookAdmin(admin.ModelAdmin):
        list_display=('title', 'publisher', 'publication_date',)
        list_filter = ('publication_date',)
        date_hierarchy = 'publication_date'
        # ordering, 发现头部显示的Publication date多了一个向下的箭头
        # 可以点击箭头,重新排序
        ordering=('-publication_date',)
   


8. 自定义编辑表单
  
    class BookAdmin(admin.ModelAdmin):
        list_display=('title', 'publisher', 'publication_date',)
        list_filter = ('publication_date',)
        date_hierarchy = 'publication_date'
        ordering=('-publication_date',)
        # 点击Book进入编辑的时候,发现没有publication_date编辑项
        fields=('title', 'authors', 'publisher',)
   


   多对对的编辑页面:
  
    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',)
        # 点击进入编辑的时候,发现了Author当初的多选框,变成了一个精巧的
        # JavaScript过滤器, 是水平排列的,可以实现全选,不选
        filter_horizontal=('authors',)
   

  
    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',)
        #filter_horizontal=('authors',)
        # filter_vertical和filter_horizontal功能一样,只不过显示为垂直方向
        filter_vertical=('authors',)
   

  
   下拉框改变为多选框:
  
    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',)
        filter_horizontal=('authors',)
        #filter_vertical=('authors',)
        # raw_id_fields,当初的下拉框对于很多publisher的时候,一定不是
        # 很使用的,现在变成了多选框,方便了许多。
        raw_id_fields=('publisher',)
   

  
  
分享到:
评论

相关推荐

    Django客户管理系统源码.zip

    Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统...

    Python基于Django学生宿舍管理系统源码.zip

    Python基于Django学生宿舍管理系统源码 Python基于Django学生宿舍管理系统源码 Python基于Django学生宿舍管理系统源码 Python基于Django学生宿舍管理系统源码 Python基于Django学生宿舍管理系统源码 Python基于...

    Python基于Django的图书管理系统源码.zip

    Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于Django的图书管理系统源码 Python基于...

    Django的资产管理系统源码

    【Django的资产管理系统源码】是一套使用Python的Django框架编写的简易资产管理软件教程。这个系统虽然规模不大,但包含了实现一个完整管理系统的必要组件,是学习Django开发的良好实践案例。该项目构建在Django 2.2...

    基于DJango开发的仓库管理系统源码.zip

    基于DJango开发的仓库管理系统,软件架构:python 3.5、django 2.2、MySQL 基于DJango开发的仓库管理系统,软件架构:python 3.5、django 2.2、MySQL 基于DJango开发的仓库管理系统,软件架构:python 3.5、...

    基于django的超市管理系统

    基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于django的超市管理系统基于...

    Django开发的一个简单的员工管理系统源码.zip

    Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统源码 Django开发的一个简单的员工管理系统...

    基于Django的图书管理系统源码+数据库.zip

    基于Django的图书管理系统源码+数据库,基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理...

    Python Web 框架,第 1 部分 使用 Django 和 Python 开发 Web 站点.doc

    标题与描述中的关键词“Python Web框架”,“Django”,“Python开发Web站点”明确指出了本文档的主题,即使用Python编程语言与Django框架进行Web应用开发。文档内容虽然包含了一些无法解析的[pic]标记,但核心信息...

    基于Django的交通设施运维管理系统设计

    基于Django的交通设施运维管理系统设计基于Django的交通设施运维管理系统设计基于Django的交通设施运维管理系统设计基于Django的交通设施运维管理系统设计基于Django的交通设施运维管理系统设计基于Django的交通设施...

    Python基于Django框架实现的一个学生信息管理系统源码.zip

    Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于...

    python期末大作业基于Django的学生成绩管理系统源码.zip

    python期末大作业基于Django的学生成绩管理系统源码python期末大作业基于Django的学生成绩管理系统源码python期末大作业基于Django的学生成绩管理系统源码python期末大作业基于Django的学生成绩管理系统源码python...

    Django入门新闻管理系统

    Django入门新闻管理系统。入门的,新手可以看下哈。。。 ================================================== Django的环境: Python的安装: python-2.7.1.msi Django的安装: 去djangoproject.com下载最新的版本...

    使用Django框架开发的企业OA管理系统源码.zip

    使用Django框架开发的企业OA管理系统源码 使用Django框架开发的企业OA管理系统源码 使用Django框架开发的企业OA管理系统源码 使用Django框架开发的企业OA管理系统源码 使用Django框架开发的企业OA管理系统源码 ...

    django资产管理系统

    - 资产管理 - 操作管理 CMDB - 运维自动化基础 - 资产管理 运行环境: python 2,7 依赖的包如下: beautifulsoup4 4.6.3 bootstrap-admin 0.3.9 bs4 0.0.1 Django 1.11.15 django-appconf 1.0.2 django-...

    基于Django开发的企业管理信息系统源码.zip

    基于Django开发的企业管理信息系统,包含了OA、销售管理、采购管理、库存管理、项目管理、文档管理以及组织管理模块。 基于Django开发的企业管理信息系统,包含了OA、销售管理、采购管理、库存管理、项目...

    基于 vue + django 的二手图书管理系统源码.zip

    基于 vue + django 的二手图书管理系统源码 基于 vue + django 的二手图书管理系统源码 基于 vue + django 的二手图书管理系统源码 基于 vue + django 的二手图书管理系统源码 基于 vue + django 的二手图书...

    Two Scoops of Django 1.11: Best Practices for the Django Web Framework.pdf

    Chapter 2: The Optimal Django Environment Setup Chapter 3: How to Lay Out Django Projects Chapter 4: Fundamentals of Django App Design Chapter 5: Settings and Requirements Files Chapter 6: Model Best ...

    Python基于Django框架的文档管理系统源码.zip

    Python基于Django框架的文档管理系统源码是一个用于创建、存储和管理文档的Web应用程序,它利用了Python的强大功能和Django框架的高效开发特性。Django是一个开源的、基于模型-视图-控制器(MVC)设计模式的高级Web...

    基于Django的教务信息管理系统源码

    《基于Django的教务信息管理系统详解》 在信息技术飞速发展的今天,教务管理系统的构建对于提升教育机构的工作效率和管理水平具有重要意义。本系统基于Python的Web开发框架Django,实现了全面、高效的教务信息管理...

Global site tag (gtag.js) - Google Analytics