admin的配置
admin是django強大功能之一,它能共從數據庫中讀取數據,呈現在頁面中,進行管理。默認情況下,它的功能已經非常強大,如果你不需要復雜的功能,它已經夠用,但是有時候,一些特殊的功能還需要定制,比如搜索功能,下面這一系列文章就逐步深入介紹如何定制適合自己的admin應用。
如果你覺得英文界面不好用,可以在setting.py 文件中修改以下選項
1
|
LANGUAGE_CODE
=
'en-us'
#LANGUAGE_CODE = 'zh-hans'
|
一 認識ModelAdmin
管理界面的定制類,如需擴展特定的model界面需從該類繼承。
二 注冊medel類到admin的兩種方式:
<1> 使用register的方法
1
|
admin.site.register(Book,MyAdmin)
|
<2> 使用register的裝飾器
1
|
@admin
.register(Book)
|
三 掌握一些常用的設置技巧
- list_display: 指定要顯示的字段
- search_fields: 指定搜索的字段
- list_filter: 指定列表過濾器
- ordering: 指定排序字段
配置示例:
1、在mysql數據庫中,創建庫
mysql> create database Django_admin character set utf8; Query OK, 1 row affected (0.01 sec) mysql> use django_admin Database changed
2、配置連接數據庫
settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django_admin', 'USER': 'root', 'PASSWORD': 'oldboy123', 'HOST': '', 'PORT': '3306', } }
3、寫建表語句
models.py
from django.db import models # Create your models here. # Create your models here. class Book(models.Model): name=models.CharField(max_length=20) price=models.IntegerField() pub_date=models.DateField() publish=models.ForeignKey("Publish") authors=models.ManyToManyField("Author") def __str__(self): return self.name class Publish(models.Model): name=models.CharField(max_length=32) city=models.CharField(max_length=32) def __str__(self): return self.name #class Book_Author(models.Model): # book=models.ForeignKey("Book") # author=models.ForeignKey("Author") class Author(models.Model): name=models.CharField(max_length=32) age=models.IntegerField(default=20) def __str__(self): return self.name
在windows終端執行:
在終端執行命令
創建表
python manage.py makemigrations
寫入數據庫
python manage.py migrate
4、配置連接數據庫
5、激活管理工具
在urls.py中配置路由分發:
from django.conf.urls import url from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ]
當這一切都配置好后,Django管理工具就可以運行了。
6、使用管理工具
通過下面地址,就可以訪問admin管理頁面。要進入管理界面,我們要先創建超級管理員賬號。
http://127.0.0.1:8000/admin
創建超級用戶和密碼
D:\python\django_admin>python manage.py createsuperuser Username (leave blank to use 'administrator'): nulige Email address: nulige@qq.com Password: Password (again): Superuser created successfully.
添加普通用戶
激活普通用戶和授權,參考下圖:
勾選相關選項,再點保存。
7、在admin中訂制各種后面管理頁面功能。
示例1:admin.py
from django.contrib import admin from app01 import models # Register your models here. class BookAdmin(admin.ModelAdmin): list_display = ('id','name','price','pub_date') list_editable = ('name','price') filter_horizontal = ('authors',) list_per_page = 2 search_fields = ('id','name','publish__name') list_filter = ('pub_date', 'publish') admin.site.register(models.Author) admin.site.register(models.Book,BookAdmin) admin.site.register(models.Publish)
示例2:admin.py
from django.contrib import admin from app01 import models # Register your models here. class BookAdmin(admin.ModelAdmin): list_display = ('id','name','price','pub_date') # list_per_page = 3 ordering = ("-price","id") # fieldsets = [ # (None, {'fields': ['name']}), # ('price information', {'fields': ['price', "publish"], 'classes': ['collapse']}), # ] #filter_vertical = admin.site.register(models.Author) admin.site.register(models.Book,BookAdmin) admin.site.register(models.Publish)