1. 程式人生 > >Django的快速入門 : 啟用網站Admin管理

Django的快速入門 : 啟用網站Admin管理

(1). 資料遷移

Django框架中有一個非常強大的應用功能--自動管理介面,常被Web平臺管理者使用,去管理整個Web平臺。

預設情況下,在settings.py配置檔案中INSTALLED_APPS包含以下應用程式,這些應用程式都是由Django提供:

  • django.contrib.admin - 管理網站。你會很快使用它。
  • django.contrib.auth - 認證系統。
  • django.contrib.contenttypes - 內容型別的框架。
  • django.contrib.sessions - 會話框架
  • django.contrib.messages - 訊息框架。
  • django.contrib.staticfiles - 管理靜態檔案的框架。

為了後續的開發,預設這些應用程式都是包含在裡面的。

使用這些Django自帶的應用程式,需要我們在資料庫中建立一些資料表對應,然後才能使用它們。為此,請執行以下命令(資料結構遷移):

$ python manage.py migrate

其中該migrate命令檢視該INSTALLED_APPS設定,並根據myweb/settings.py檔案中的資料庫設定和應用程式隨附的資料庫遷移建立任何必需的資料庫表(稍後將介紹)。您會看到適用於每個遷移的訊息。

執行上面命令後的輸出結果
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

# 預設情況下自動在我們的資料庫中建立了10張表,具體如下:
MariaDB [mydemo]> show tables;
+----------------------------+
| Tables_in_mydemo           |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| stu                        |
+----------------------------+
11 rows in set (0.00 sec)

(2). 建立管理員使用者

首先,我們需要建立一個可以登入管理站點的使用者。執行以下命令:

    $ python manage.py createsuperuser

    # 輸入您所需的使用者名稱,然後按Enter鍵。
    Username: admin

    # 然後將提示您輸入所需的電子郵件地址:
    Email address: [email protected]

    # 最後一步是輸入你的密碼。您將被要求輸入密碼兩次,第二次作為第一次的確認
    Password: **********
    Password (again): *********
    Superuser created successfully.

(2). 啟動開發伺服器

預設情況下,Django管理員站點被啟用。讓我們開始開發伺服器並探索它。

啟動開發伺服器命令如下:

    $ python manage.py runserver 0:8000

(3). 設定時區和語言:

編輯myweb/settings.py配置檔案:

...

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

...

(4). 將我們自定義的應用程式的加入到後臺管理

但我們的自定義應用程式在哪裡?並沒有顯示在後臺管理索引頁面上。

要做到這一點,開啟myapp/admin.py 檔案,並編輯程式碼如下:

from django.contrib import admin

from myapp.models import Stu

admin.site.register(Stu)

(5). 更深入設計後臺管理

# 編輯myapp/models.py檔案,在Stu類中新增如下資訊,讓後臺管理顯示中文欄位。

class Stu(models.Model):
    '''自定義Stu表對應的Model類'''
    #定義屬性:預設主鍵自增id欄位可不寫
    id = models.AutoField("學號",primary_key=True)
    name = models.CharField("姓名",max_length=16)
    age = models.SmallIntegerField("年齡")
    sex = models.CharField("性別",max_length=1)
    classid=models.CharField("班級",max_length=8)

    # 定義預設輸出格式
    def __str__(self):
        return "%d:%s:%d:%s:%s"%(self.id,self.name,self.age,self.sex,self.classid)

    # 自定義對應的表名,預設表名:myapp_stu
    class Meta:
        db_table="stu"
        verbose_name = '瀏覽學生資訊'  
        verbose_name_plural = '學生資訊管理'
# 編輯myapp/admin.py 檔案,實現資訊管理的個性化定製

from django.contrib import admin

# Register your models here.
from myapp.models import Stu

#Stu模型的管理器(裝飾器寫法)
@admin.register(Stu)
class StuAdmin(admin.ModelAdmin):
    #listdisplay設定要顯示在列表中的欄位(id欄位是Django模型的預設主鍵)
    list_display = ('id','name','age','sex','classid')

    #設定哪些欄位可以點選進入編輯介面
    list_display_links = ('id','name')

    #list_per_page設定每頁顯示多少條記錄,預設是100條
    list_per_page = 10

    #ordering設定預設排序欄位,負號表示降序排序
    ordering = ('id',)  #-id降序

    #list_editable 設定預設可編輯欄位
    #list_editable = ['age','sex','classid']

    #其他請詳見手冊文件說明