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


1,激活管理界面

  • 修改settings.py

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 這時候會提示你輸入創建超級用戶用於登錄管理后台。

  • 修改urls.py

   現在可以配置admin的url配置:直接取消注釋即可。如下圖

 

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

這就是Django管理界面,可以隨意操作..

2,注冊自己的模型到管理界面

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

在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,它就執行其中的代碼。

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

應用程序`` 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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM