有時候我們需要後臺添加數據可以使用到admin站點管理:
Django能夠根據定義的模型類自動地生成管理頁面
1. 創建超級管理員
python manage.py createsuperuser
根據提示輸入:
創建用戶名、密碼、郵箱
運行項目,此時報錯,
Error: [WinError 10013] 以一種訪問權限不允許的方式做了一個訪問套接字的嘗試。
百度後發現是端口被佔用,需要殺掉進程,
cmd
netstat -ano|findstr 8000 找出佔用8000端口的應用
tasklist |findstr 11568 查詢出佔用端口的應用
taskkill /pid 11568 /F 根據pid殺死進程
但是發現佔用較多,每次都要殺掉進程感覺比較麻煩,所以就決定修改django默認的佔用端口號;
直接在pycharm中進行修改:
修改端口後再運行,運行成功;’
2. 打開瀏覽器登錄,
在地址欄中輸入如下地址後回車http://127.0.0.1:8887/admin/
輸入前面創建的用戶名、密碼完成登錄
登錄成功後界面如下:
但是並沒有我們自己應用模型的入口,接下來進行第三步操作
3. 註冊模型類
在自己應用中的admin.py文件中註冊
打開projects/admin.py
文件,編寫如下代碼:
from django.contrib import admin
from .models import Projects
# 直接使用自帶的站點
admin.site.register(Projects)
刷新後如下:
點擊項目22後進入:
此刻發現名稱項目22和項目11是從哪裏來的原來是定義models中定義的:
再看一下:
verbose_name="項目11"
verbose_name_plural="項目22"
from django.db import models
# Create your models here.
class Projects(models.Model):
# 創建Projects模型類
name = models.CharField(verbose_name="項目名稱",max_length=200,unique=True,help_text="項目名稱")
leader = models.CharField(verbose_name="負責人",max_length=50,help_text="負責人")
tester = models.CharField(verbose_name="測試人員",max_length=50,help_text="測試人員")
programer = models.CharField(verbose_name="開發人員",max_length=50,help_text="開發人員")
publish_app=models.CharField(verbose_name="發佈應用",max_length=50,help_text="發佈應用")
desc = models.TextField(verbose_name="簡要描述",max_length=200,help_text="簡要描述")
#設定數據庫名稱等信息
class Meta:
db_table="tb_projects"
verbose_name="項目11"
verbose_name_plural="項目22"
4.Admin站點的展示效果可以通過自定義ModelAdmin類來進行控制、
在projects/admin.py
中定義:
from django.contrib import admin
from .models import Projects
class ProjectsAdmin(admin.ModelAdmin):
#指定在修改、新增中顯示的字段,詳情頁控制
fields = ("name","leader","tester")
#指定展示列字段
list_display = ("id","name","leader","tester")
# # # 直接使用自帶的站點
admin.site.register(Projects,ProjectsAdmin)
注意註冊時需要將ProjectsAdmin類作爲參數傳進去;
再次運行:
展示和詳情頁
除了上面的還有以下控制字段:
# 控制列表展示數量
list_per_page = 2
# 控制展示字段,字段顯示順序和列表中順序相同
list_display = ['id','btitle','bread','date']
# 指定搜索字段
search_fields = ['btitle']
# 控制執行按鈕在上面或者在下面
actions_on_bottom = True
actions_on_top = False
# 設置過濾條件
list_filter = ['bread']
運行後發現每次編輯都沒有代入名稱:
需要修改models.py中:
from django.db import models
# Create your models here.
class Projects(models.Model):
# 創建Projects模型類
name = models.CharField(verbose_name="項目名稱",max_length=200,unique=True,help_text="項目名稱")
leader = models.CharField(verbose_name="負責人",max_length=50,help_text="負責人")
tester = models.CharField(verbose_name="測試人員",max_length=50,help_text="測試人員")
programer = models.CharField(verbose_name="開發人員",max_length=50,help_text="開發人員")
publish_app=models.CharField(verbose_name="發佈應用",max_length=50,help_text="發佈應用")
desc = models.TextField(verbose_name="簡要描述",max_length=200,help_text="簡要描述")
#設定數據庫名稱等信息
class Meta:
db_table="tb_projects"
verbose_name="項目"
verbose_name_plural="項目"
#帶入名稱
def __str__(self):
return self.name