Django Admin後臺管理功能使用
轉載之:https://www.cnblogs.com/jishuweiwang/p/5943225.html
一 前言
用過Django框架的童鞋肯定都知道,在建立完Django專案後,每個app下,都會有一個urls.py檔案,裡邊會有如下幾行:
from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ]
上邊看到匯入的admin模組,就是本節所要說的主要內容
二主要功能
功能1:提供資料庫管理功能
基於admin模組,可以實現類似資料庫客戶端的功能,對資料進行增刪改查
功能2:二次開發
基於該模組的資料管理功能,可以二次定製一些實用的功能。
三 基本使用方法
步驟1:在settings.py中,INSTALLED_APPS中,加入django.contrib.admin,一般在建立django專案時自動建立
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', #admin依賴 'django.contrib.contenttypes', #admin依賴 'django.contrib.sessions', #admin依賴 ...... ]
步驟2:urls.py建立admin路由,一般在建立django專案時自動建立
from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), .... ]
步驟3:在settings.py配置檔案中,中介軟體註冊,一般在建立django專案時自動建立
MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', .... ]
步驟4:建立admin管理使用者
python manage.py createsuperuser
步驟5:在app 的models.py檔案中建立表資訊,即表類
class Gender(models.Model): name = models.CharField(max_length=32) class userinfo(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=30, verbose_name='使用者名稱',editable=False) email = models.EmailField(db_index=True) memo = models.TextField() img = models.ImageField(upload_to='upload') user_type = models.ForeignKey("UserType", null=True, blank=True) gender_choices = ( (0, "男"), (1, "女"), ) gender = models.IntegerField(choices=gender_choices,default=1) class UserType(models.Model): name = models.CharField(max_length=32) def __str__(self): return self.name
步驟6:在admin.py中登錄檔
from django.contrib import admin # Register your models here. from app01 import models admin.site.register(models.userinfo) admin.site.register(models.UserType)
步驟7:生成表結構
python manage.py makemigrations && python manage.py migrate
注意:在資料庫表結構發生變動時,再次執行python manage.py makemigrations就會報錯,這是因為此時表中可能已經有資料,貌然變動表結構會有影響,此時的解決方法有兩種,一種是,設定新增欄位的default='xxx'某個值, 但是這種通用性不是很好。 另外一種是,設定該欄位null=True。即允許為空即可
步驟8:執行專案,登陸管理介面
python manage.py runserver
訪問URL:http://IP:8000/admin
四 顯示優化
優化1:顯示欄位資訊
這時候去UserType裡邊新增幾條資料後,會發現這幾天資料都顯示User Type object,顯示很不友好。圖示如下
處理辦法就是去models.py中,修改class UserType類,增加
def __str__(self): return self.name
增加之後,再次檢視,就會顯示使用者之前增加的可視名稱了
優化2:優化表單資訊為中文顯示
在userinfo表中,設定了verbose_name='使用者名稱',這個引數的作用就是在使用者新增資訊的時候,顯示“使用者名稱”,而不是預設的name