`

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开发的仓库管理系统源码.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的图书管理...

    Django的资产管理系统源码

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

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

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

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

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

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

    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...

    Python基于Django的旅游信息管理系统源码

    Python基于Django的旅游信息管理系统源码Python基于Django的旅游信息管理系统源码Python基于Django的旅游信息管理系统源码Python基于Django的旅游信息管理系统源码Python基于Django的旅游信息管理系统源码Python基于...

Global site tag (gtag.js) - Google Analytics