本篇主要講解Django框架的admin站點管理。
django本身提供了admin站點管理應用,在每一個app提供了admin.py腳本文件,可以將當前應用的models.py中模型類,添加到admin站點中,以方便管理員管理模型對應的數據。
python manage.py createsuperuser
如上圖所示,設置的用戶名,郵箱地址,密碼均為:[email protected]
接下來,運行程序
python manage.py runserver
輸入:http://127.0.0.1:8000/admin/ 回車之後,跳轉頁面
1.1添加用戶
成功添加用戶信息,用戶名為admin,密碼為[email protected](注意,這個和超級管理員賬號不一樣)
此時注意下圖的狀態
退出登錄狀態,重新登錄
然後用新添加的用戶登錄,報如下錯誤
解決辦法:
用超級管理員賬號登錄,進區修改用戶的狀態
給此用戶增加Staff status
操作完如下
再次用此賬號登錄測試
此時在數據庫裡,下面幾張表比較重要
總結:
啟動服務之後,可以訪問/admin進入站點後台管理頁面。
可以嘗試創建後台管理人員賬號,將activate和staff status勾選上。並添加login應用的管理User模型的權限。
在login應用的admin.py文件添加代碼如下:
from django.contrib import admin
from .models import User
# Register your models here.
admin.site.register(User)
保存之後,重新刷新站點頁面
如果會有四條數據,查看數據庫可知,保存了四條數據
此時修改一下代碼,使user_id可以為空
user_id = models.IntegerField(primary_key=True,blank=True)
下面添加用戶
此時再看數據庫數據,多了一條
修改login文件裡面的models.py代碼
保存之後,刷新admin頁面
在login模塊models.py添加代碼
class Meta:
verbose_name = '會員'
verbose_name_plural = verbose_name
效果如下
1.6 修改語言和時區
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
刷新站點頁面,效果如下:
在login的admin.py修改代碼如下:
from django.contrib import admin
from .models import User
# Register your models here.
class UserAdmin(admin.ModelAdmin):
list_display = ('user_id','name','phone','email')
list_display_links = ('name',)
# 過濾器
list_filter = ('name','phone')
list_editable = ('phone','email')
search_fields = ('name','phone','email')
admin.site.register(User,UserAdmin)
注意添加Field字段參數的blank和verbase_name
在上面代碼已經修改下面的報錯,下圖看一下即可。
保存刷新,界面如下
總結
站點有兩種寫法
方法一:
class UserAdmin(admin.ModelAdmin):
list_display = ('user_id','name','phone','email')
list_display_links = ('name',)
# 過濾器
list_filter = ('name','phone')
list_editable = ('phone','email')
search_fields = ('name','phone','email')
admin.site.register(User,UserAdmin)
方法二
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
list_display = ('user_id','name','phone','email')
list_display_links = ('name',)
# 過濾器
list_filter = ('name','phone')
list_editable = ('phone','email')
search_fields = ('name','phone','email')