django站點管理

1、啓動django站點管理功能web

  一、關於django.contrib包數據庫

     包含了django自帶的衆多附加組件,主要包括:django

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

     2)用戶鑑別系統:django.contrib.authapp

     3)支持匿名會話:django.contrib.sessions工具

     4)用戶評註系統:django.contrib.commentsspa

  二、settings.py中啓動管理工具所須要的包翻譯

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',
)

   三、建立管理工具所須要的「額外表」code

     ctrl+alt+rorm

     syncbd

     

   四、建立超極用戶

     1)系統建表後繼續建立超極用戶

     

     2)pyCharm中後續使用命令建立

        ctrl+alt+r

          createsuperuser

       

       密碼:admin

        

      

       說明:只有當INSTALLED_APPS中包含了django.contrib.auth時,

       createsuperuser命令才能夠使用。

       createsuperuser建立的用戶沒法正常登陸( 建立出錯致使密碼錯誤)。

       

       能夠用admin帳號手動修改密碼:

       

       須要安裝:'django.contrib.messages.middleware.MessageMiddleware',

     3)admin登陸以後

       

       PS:因爲尚未建立任何模塊,如今只有「用戶組」和「用戶」兩個基本模塊。

   五、管理界面翻譯成中文

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

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',
)

      執行結果:

      

   六、關於頁面沒有被渲染的處理辦法

      屢次調整如下注釋掉的包,最終仍是註釋掉:(緣由待定)

      

      最終頁面效果:

      

 2、將本身定義models添加到管理界面中

  一、未添加自定義models前:

    

   二、源碼:

    models.py:

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

    admin.py:

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)

   三、進入管理界面

    

    四、手工添加數據

      1)添加3個author

       

      2)添加2個publisher

       

      3)添加book

       

       Authors:多對多

       publisher:外鍵

        

       數據庫中的存儲狀況:  

use django_db;

select *
from django_manage_app_book;

select *
from django_manage_app_book_authors;

       執行結果:

       

       

3、字段的一些設置

  一、容許某個字段爲空

    不容許爲空時:

    

    容許爲空:

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

    

  注:此處數據庫中的author表的結構並無被改變,email字段仍是not null,

    只是存入了「空字符串」,只是django代碼層的容許爲空檢查經過了

  二、「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

  三、字段別名的使用

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='電子郵件')

    

   四、自定義「顯示字段」,「搜索字段」

    可點擊顯示字段名進行排序

    自定義顯示字段前:默認使用__unicode__方法

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)

    

    自定義「顯示字段」,「搜索字段」:

    admin.py

#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)

    執行結果:

    

  五、自定「篩選字段」

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')
    date_hierarchy = 'publication_date'
    ordering = ('publication_date',)

   

   時間篩選導航條會逐層深刻,從年,到月,到日

   date_hierarchy只接收字符串,而不是元組,只能對一個字段進行按層次篩選 

  五、其餘 

     1)新增記錄時,字段的顯示順序,哪些可編輯

     2)多對多字段的備選記錄數不少時

     3)外鍵字段備選記錄不少時

    處理方式詳見:http://djangobook.py3k.cn/2.0/chapter06/

相關文章
相關標籤/搜索