python Django 學習筆記(五)—— Django admin自動管理界面

1,激活管理界面

  • 修改settings.pyhtml

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
     'django.middleware.locale.LocaleMiddleware',
)


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',
    'DjangoMysqlSite.products', #這個是我上章創建的app,可參考前面
)

   修改完後到項目目錄執行 python manage.py syncdb 這時候會提示你輸入建立超級用戶用於登陸管理後臺。python

  • 修改urls.pymysql

   如今能夠配置admin的url配置:直接取消註釋便可。以下圖sql

 

  •  python manage.py runserver 開啓開發服務器,http://127.0.0.1:8000/admin 測試。

這就是Django管理界面,能夠隨意操做..django

2,註冊本身的模型到管理界面

依然用前面用到的例子products app 具體看上一章 Product,Company這兩個模型。vim

在products目錄下新建admin.py,代碼以下:服務器

admin.site.register(Company,CompanyAdmin) admin.site.register(Product,ProductAdmin)
以上兩句便可註冊到管理後臺,下面是添加了一些附加功能的一些代碼,固然本身能夠自由定義。
#vim: set fileencoding=utf-8 :

from django.contrib import admin
from DjangoMysqlSite.products.models import Company,Product

#自定義顯示列
class CompanyAdmin(admin.ModelAdmin):
    list_display = ('full_name','address','tel')
    search_fields = ('full_name',) 

class ProductAdmin(admin.ModelAdmin):
    list_display = ('product_name','price','stock','create_date')#自定義顯示列
    search_fields = ('product_name','price')#搜索字段
    list_filter = ('create_date',) #右邊小窗過濾器
    date_hierarchy = 'create_date' #對一個日期型字段進行層次劃分
    ordering = ('-create_date',)#列表排序字段
    fields  = ('product_name','stock','price','create_date',)#定義表單字段的順序,默認安裝模型中定義順序

admin.site.register(Company,CompanyAdmin)
admin.site.register(Product,ProductAdmin)

 

效果以下圖:

 3,Admin是如何工做的

當服務啓動時,Django從`` url.py`` 引導URLconf,而後執行`` admin.autodiscover()`` 語句。 這個函數遍歷INSTALLED_APPS配置,而且尋找相關的 admin.py文件。 若是在指定的app目錄下找到admin.py,它就執行其中的代碼。session

在`` products`` 應用程序目錄下的`` admin.py`` 文件中,每次調用`` admin.site.register()`` 都將那個模塊註冊到管理工具中。 管理工具只爲那些明確註冊了的模塊顯示一個編輯/修改的界面。app

應用程序`` django.contrib.auth`` 包含自身的`` admin.py`` ,因此Users和Groups能在管理工具中自動顯示。 其它的django.contrib應用程序,如django.contrib.redirects,其它從網上下在的第三方Django應用程序同樣,都會自行添加到管理工具。函數

綜上所述,管理工具其實就是一個Django應用程序,包含本身的模塊、模板、視圖和URLpatterns。 你要像添加本身的視圖同樣,把它添加到URLconf裏面。 你能夠在Django基本代碼中的django/contrib/admin 目錄下,檢查它的模板、視圖和URLpatterns,但你不要嘗試直接修改其中的任何代碼,由於裏面有不少地方可讓你自定義管理工具的工做方式。 (若是你確實想瀏覽Django管理工具的代碼,請謹記它在讀取關於模塊的元數據過程當中作了些不簡單的工做,所以最好花些時間閱讀和理解那些代碼。)

 

最後說明一點這個管理界面不必定適合你要作的項目應用中,僅做爲理解學習Django。固然對於簡單的一些資訊新聞類能夠直接採用這個管理後臺,更多的這方面的能夠訪問https://docs.djangoproject.com/en/dev/ref/contrib/admin/

相關文章
相關標籤/搜索