码迷,mamicode.com
首页 > 其他好文 > 详细

django站点管理

时间:2014-06-11 07:19:38      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   java   

一、启动django站点管理功能

  1、关于django.contrib包

     包含了django自带的众多附加组件,主要包括:

     1)管理工具:  django.contrib.admin

     2)用户鉴别系统:django.contrib.auth

     3)支持匿名会话:django.contrib.sessions

     4)用户评注系统:django.contrib.comments

  2、settings.py中启动管理工具所需要的包

bubuko.com,布布扣
INSTALLED_APPS = (
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    #‘django.contrib.messages‘,
    #‘django.contrib.staticfiles‘,
    django_manage_app,
)

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‘,
)
bubuko.com,布布扣

   3、创建管理工具所需要的“额外表”

     ctrl+alt+r

     syncbd

     bubuko.com,布布扣

   4、创建超极用户

     1)系统建表后继续创建超极用户

     bubuko.com,布布扣

     2)pyCharm中后续使用命令创建

        ctrl+alt+r

          createsuperuser

        bubuko.com,布布扣

       密码:admin

        bubuko.com,布布扣

       bubuko.com,布布扣

       说明:只有当INSTALLED_APPS中包含了django.contrib.auth时,

       createsuperuser命令才可以使用。

       createsuperuser创建的用户无法正常登录( 创建出错导致密码错误)。

       bubuko.com,布布扣

       可以用admin账号手动修改密码:

       bubuko.com,布布扣

       需要安装:‘django.contrib.messages.middleware.MessageMiddleware‘,

     3)admin登录之后

       bubuko.com,布布扣

       PS:由于还没有创建任何模块,现在只有“用户组”和“用户”两个基本模块。

   5、管理界面翻译成中文

      添加:‘django.middleware.locale.LocaleMiddleware‘,

bubuko.com,布布扣
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‘,
    django.middleware.locale.LocaleMiddleware,
)
bubuko.com,布布扣

      执行结果:

      bubuko.com,布布扣

   6、关于页面没有被渲染的处理办法

      多次调整以下注释掉的包,最终还是注释掉:(原因待定)

      bubuko.com,布布扣

      最终页面效果:

      bubuko.com,布布扣

 二、将自己定义models添加到管理界面中

  1、未添加自定义models前:

    bubuko.com,布布扣

   2、源码:

    models.py:

bubuko.com,布布扣
from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    def __unicode__(self):
        return u%s, %s%(self.name,self.country)

    class Meta:
        ordering = [-name]

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

  def __unicode__(self):
        return u‘%s, %s, %s, %s‘%(self.id,self.first_name,
                                self.last_name,self.email)
class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) publication_date = models.DateField() def __unicode__(self): return self.title
bubuko.com,布布扣

    admin.py:

bubuko.com,布布扣
from django.contrib import admin
from django_manage_app.models import Publisher,Author,Book
# Register your models here.
admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)
bubuko.com,布布扣

   3、进入管理界面

    bubuko.com,布布扣

    4、手工添加数据

      1)添加3个author

       bubuko.com,布布扣

      2)添加2个publisher

       bubuko.com,布布扣

      3)添加book

       bubuko.com,布布扣

       Authors:多对多

       publisher:外键

        bubuko.com,布布扣

       数据库中的存储情况:  

bubuko.com,布布扣
use django_db;

select *
from django_manage_app_book;

select *
from django_manage_app_book_authors;
bubuko.com,布布扣

       执行结果:

       bubuko.com,布布扣

       bubuko.com,布布扣

三、字段的一些设置

  1、允许某个字段为空

    不允许为空时:

    bubuko.com,布布扣

    允许为空:

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True)

    bubuko.com,布布扣

  注:此处数据库中的author表的结构并没有被改变,email字段还是not null,

    只是存入了“空字符串”,只是django代码层的允许为空检查通过了

  2、“NULL值” 与 “允许某个字段为空”

    字符串型:不存在NULL,留空时系统自动录入“空字符串”

    日期类型:DateField,TimeField,DateTimeField

         不接受“空字符串”,录入"NULL值"

         留空时必须注明(blank=True, null=True)

    数字类型:IntegerField,DecimalField,FloatField

         不接受“空字符串”,录入"NULL值"

         留空时必须注明(blank=True, null=True)

    eg:

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)

    注:实际上此时数据库中的结构没有被改变,还是not null

  3、字段别名的使用

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=电子邮件)

   bubuko.com,布布扣 

   4、自定义“显示字段”,“搜索字段”

    可点击显示字段名进行排序

    自定义显示字段前:默认使用__unicode__方法

bubuko.com,布布扣
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=电子邮件)

    def __unicode__(self):
        return u%s, %s, %s, %s%(self.id,self.first_name,
                                self.last_name,self.email)
bubuko.com,布布扣

    bubuko.com,布布扣

    自定义“显示字段”,“搜索字段”:

    admin.py

bubuko.com,布布扣
#coding:utf8
from django.contrib import admin
from django_manage_app.models import Publisher,Author,Book
# Register your models here.

class AuthorAdmin(admin.ModelAdmin):
    list_display = (first_name, last_name, email)
    search_fields = (first_name, last_name)

admin.site.register(Publisher)
admin.site.register(Author,AuthorAdmin)
admin.site.register(Book)
bubuko.com,布布扣

    执行结果:

    bubuko.com,布布扣

  5、自定“筛选字段”

bubuko.com,布布扣
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)
bubuko.com,布布扣

   执行结果:

   bubuko.com,布布扣

    字段分层筛选(结果集升序): 

class BookAdmin(admin.ModelAdmin):
    list_display = (title, publisher, publication_date)
    date_hierarchy = publication_date
    ordering = (publication_date,)

   bubuko.com,布布扣

   时间筛选导航条会逐层深入,从年,到月,到日

   date_hierarchy只接收字符串,而不是元组,只能对一个字段进行按层次筛选 

  5、其他 

     1)新增记录时,字段的显示顺序,哪些可编辑

     2)多对多字段的备选记录数很多时

     3)外键字段备选记录很多时

    处理方式详见:http://djangobook.py3k.cn/2.0/chapter06/

django站点管理,布布扣,bubuko.com

django站点管理

标签:des   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/edisonfeng/p/3772324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!