Django 初始化後臺管理
當一個 Django 項目第一次使用 admin 後臺管理功能時,需要通過兩步實現,第一步是本地化操作,第二步創建管理員
本地化
實現語言和時區本地化,修改 Django 項目的 settings.py 文件,找到如下代碼進行修改:
# Internationalization
# https://docs.djangoproject.com/en/3.0/topics/i18n/
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
註釋掉的是原代碼,'zh-hans'
代表中國,Asia/Shanghai
代表亞洲上海,修改這兩項後,在隨後的 admin 界面就可以實現中文了
創建管理員
第二步是在註冊一個該 Django 項目的管理員賬號,在項目文件夾下使用命令行運行python manage.py createsuperuser
,根據其步驟提示,即可完成創建,過程如下:
E:\django\djDemo>python manage.py createsuperuser
Username (leave blank to use 'stephencurry'): lmh
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
如上所示即創建完成,這時鍵入python manage.py runserver
啓動項目,進入項目的地址的 admin 目錄下,就可以進入 admin 後臺管理界面(地址爲127.0.0.1:8000/admin
)
使用剛纔註冊的用戶名密碼登錄後,即可進入 admin 後臺管理主頁(我這個新項目沒本地化所以是英文,嘿嘿嘿)
使用 admin 管理 model
通過 Django 的 admin 後臺管理功能,我們可以對自己的 model 模型進行管理,但是在這之前要先將模型類在 admin 中進行註冊
註冊模型類
model 模型是屬於 app 的,所以我們要在 app 下的 admin.py 中對我們在 models.py 中創建的模型進行註冊,這裏 models.py 已經創建好了,代碼如下:
from django.db import models
class BookInfo(models.Model):
btitle = models.CharField(max_length=255)
bpub_date = models.DateField()
class User(models.Model):
uname = models.CharField(max_length=30)
upassword = models.CharField(max_length=20)
ugender = models.BooleanField(default=True)
ubirth = models.DateField()
ubook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)
models.py 中定義了兩個 model,現在我們要在 admin 中對他們進行註冊
註冊模型使用 admin.site.register(model)
方法進行註冊:
from django.contrib import admin
from .models import BookInfo, User
# Register your models here.
admin.site.register(BookInfo)
admin.site.register(User)
Django 有熱加載功能,我們修改完代碼不需要重新啓動項目,只需要等它自己更新完刷新界面就好了,刷新後,就會在 admin 界面中看到模型類:
隨後我們便可以在這個界面中對其進行添加和刪除數據的操作,直接鼠標點擊就可以完成,就不介紹了!
自定義管理頁面(模型管理類)
我們也可以通過自定義模型管理類,來自己定義 admin 頁面中 model 的顯示內容
方法就是在 admin.py 中創建模型管理類:
class BookInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'btitle', 'bpub_date']
class UserAdmin(admin.ModelAdmin):
list_display = ['uname', 'ubook']
模型管理類必須繼承admin.ModelAdmin
,在模型管理類中定義名爲list_display
的 list,將我們想要 admin 頁面進行顯示的字段寫入這個 list 即可
等待項目更新後刷新頁面,即可看到我們想讓 admin 頁面顯示的字段