17.Django_使用admin站點管理

有時候我們需要後臺添加數據可以使用到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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章