Django小筆記-站點管理
admin站點管理 概述: 內容釋出:負責新增、修改、刪除內容 公告訪問
配置admin應用 在settings.py檔案中的INSTALLED_APPS中新增'django.contrib.admin'(一般會自動新增)
建立管理員使用者 執行<python manage.py createsuperuser> 一次輸入使用者名稱、郵箱、密碼
D:\>cd D:\Python_pycharm\Python3.6.0\day34\1_project\project D:\Python_pycharm\Python3.6.0\day34\1_project\project>python manage.py createsuperuser 報錯:django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([WinError 10061] 由於目標計算機積極拒絕,無法連線。)")
解決方法:將C:\Windows\System32\drivers\etc\hosts檔案中下面這名話放開: 127.0.0.1 localhost 將DATABASES中的'HOST':'localhost'改為'HOST':'127.0.0.1' 重啟mysql服務
D:\Python_pycharm\Python3.6.0\day34\1_project\project>python manage.py createsuperuser
Username (leave blank to use 'asus'): sunck
Email address:
然後進入http://127.0.0.1:8000/admin網頁,(如果進不去,重新建立使用者python manage.py runserver),登入剛剛的賬號密碼,會跳轉到新頁面
如果覺得英文不好,可以漢化。在settings中,將LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC'(111-113行左右)改為LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai',然後重新進入http://127.0.0.1:8000/admin就成功漢化了
管理資料表 修改admin.py檔案 。 直接新增以下語句 from .models import Grades,Students #註冊 admin.site.register(Grades) admin.site.register(Grades) 重新整理http://127.0.0.1:8000/adminadmin頁面,就會看到Grades、Students這兩張表了
自定義管理頁面 from .models import Grades,Students #註冊 class GradesAdmin(admin.ModelAdmin): #列表頁屬性 list_display = ['pk','gname','gdate','ggirlnum','gboynum','isDelete'] #要顯示的欄位 list_filter = ['gname'] #過濾器:過濾欄位,以gname為例 search_fields = ['gname'] #搜尋欄位,要搜尋哪個就新增哪一個,以gname為例 list_per_page = 5 #分頁,(超過幾條資料就分頁)
#新增、修改頁屬性 # fields = ['ggirlnum','gboynum','gname','gdate','isDelete'] #規定屬性的先後順序 fieldsets = [("num",{"fields":['ggirlnum','gboynum']}),("base",{"fields":['gname','gdate','isDelete']})] #給屬性分組 #注意fields 和fieldsets 不能同時使用
admin.site.register(Grades) admin.site.register(Students)
在http://127.0.0.1:8000/admin/myApp/grades/add/頁增加一條資料,(ggirlnum:1 gboynum:50 gname:python05 gdate:2018.8.9)儲存,在資料庫中檢視,這條資料就存在資料庫中了
關聯物件 需求:在建立一個班級時可以直接新增幾個學生 class Studentsnfo(admin.TabularInline): model = Students extra = 2 #設定預設顯示條目的數量
class GradesAdmin(admin.ModelAdmin): inlines = [StudentsInfo] #inline把StudentsInfo關聯起來
布林值顯示問題 class StudentsAdmin(admin.ModelAdmin): def gender(self): if self.sgender: return "男" else: return "女" gender.short_description = "性別" #設定頁面列的名稱
list_display = ['pk', 'sname', 'sage', gender, 'scontend','sgrade' 'isDelete']
執行動作位置問題 list_display = ['pk', 'sname', 'sage', gender, 'scontend','sgrade' 'isDelete'] list_per_page = 3 actions_on_top = False#執行動作位置 actions_on_bottom = True #執行動作位置
admin.site.register(Students)
使用裝飾器完成註冊
將admin.site.register(Students)換成@admin.register(Students)並放在class StudentsAdmin上面
@admin.register(Students) class StudentsAdmin(admin.ModelAdmin): def gender(self): if self.sgender: return "男" else: return "女" gender.short_description = "性別" #設定頁面列的名稱
list_display = ['pk', 'sname', 'sage', gender, 'scontend','sgrade' 'isDelete'] list_per_page = 3
actions_on_top = False#執行動作位置 actions_on_bottom = True #執行動作位置
#admin.site.register(Students)