Django Admin網站管理總結

來源:互聯網
上載者:User

1.Using the Admin site
admin模組在django.contrib中,所以添加admin管理時需要在ulrs中去掉以下兩行注釋;
from django.contrib import admin
admin.autodiscover()

2.setting設定
1)在INSTALLED_APPS中添加django.contrib.admin
小技巧:INTALLED_APPS最好以alphabetical排列,這樣比較容易閱讀。

2)確保以下三個app被安裝
django.contrib.sessions
django.contrib.contenttypes
django.contrib.auth

3)MIDDLEWARE_CLASSES開啟
django.middleware.common.CommonMiddleware
django.contrib.sessions.middleware.SessionMiddleware
django.contrib.auth.middleware.AuthenticationMiddleware

4)安裝admin資料庫
如果以上幾點是新添加的,那麼需要添加amdin管理用資料庫。
python manage.py syncdb

5)createsuperuser
如果在安裝資料庫時沒有建立superuser,則可以用以下命令建立
python manage.py createsuperuser

3.Adding your models to the Admin site
在books app目錄下建立admin.py檔案,注意這個檔案名稱只能叫admin.py不能是別的。
因為在django家在urls.py時會執行admin.autodiscover()函數,該函數從INSTALLED_APPS
中尋找app,並在對應的app下尋找amdin.py檔案名稱。執行admin.py的內容。
e.g.
from django.contrib import admin
from website.books import models

admin.site.register(models.Publisher)
admin.site.register(models.Author)
admin.site.register(models.Book)

4.修改admin可編輯屬性

admin會根據在建立資料庫時的非空與否屬性來確定欄位是否必填。
預設的欄位都是必須填的,如果可以為空白可以自己添加屬性。e.g.
class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True)
注意:對於時間和數字,允許為空白的條件需要blank=True,null=True,否則會引發錯誤。
models.DateField(blank=True, null=True)
這裡blank=True沒有改變資料庫屬性,但是null=True卻改變了資料庫的屬性,所以
在添加null=True後需要更改資料庫,這個在上一節已經描述過了,需要用資料庫命令來修改。

5.Customizing field labels
預設情況下,資料庫的field名字在admin中顯示的是資料庫定義時的名字,例如上面例子中first_name
顯示的就是first_name,這個可以修改在資料庫中顯示的名字(label),例如:
class Author(models.Model):
    first_name = models.CharField(max_length=30,verbose_name="姓名")
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True)
    
    def __unicode__(self):
    return self.last_name
6.Customizing ModelAdmin class
1)預設情況下amdin中顯示某個表中的內容是__unicode__函數中定義的內容。例如上面的例子
Author表中在admin中只會顯示last_name列內容。
類似下面的表示:
Author #表名
xiuqi  #作者的last_name
yogngao

2)顯然這個樣子是很難看的,我們可以完全定製顯示形式包括5中提到的修改label名。
修改後的例子:
#admin.py
from django.contrib import admin
from 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)
#models.py
class Author(models.Model):
    first_name = models.CharField(max_length=30,verbose_name="姓名")
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True)
這樣修改後的表示形式為:
姓名 last_name email
zhang  san   xxx@mail.com
sun  yonggao   xxx@mail.com
3)其他定製項目
search_fields = ('first_name', 'last_name')
list_filter = ('first_name',)
date_hierarchy = ('first_name')
ordering = ('-first_name',)
fields = ('last_name', 'first_name', 'email', )#定製列的先後順序
#利用fields屬性同樣可以起到控制可編輯域作用,即不想被編輯的域直接就
#可以不列出來。

7.控制使用者 組 許可權
這個直接配置即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.