1. 程式人生 > 實用技巧 >Django Admin後臺管理功能使用

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