1. 程式人生 > >Django小筆記-站點管理

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:

[email protected]   (這個郵箱隨便寫)         Password:        (要儘量長一點,輸入之後看不到,我輸入的是1234567890a)         Password (again):         Superuser created successfully.

        然後進入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)