天天看點

Django學習(2)

• 資料庫設定

預設使用SQLite,相關的設定都在setting.py檔案中進行。

setting,py中還有其他設定:

INSTALLED_APPS檔案頂部的設定。該名稱包含在此Django執行個體中激活的所有Django應用程式的名稱。其中包含一些預設的應用程式。不需要時可以在INSTALLED_APPS中删去。

python manage.py migrate
           

該migrate指令将檢視該INSTALLED_APPS設定,并根據mysite/settings.py檔案中的資料庫設定以及應用程式随附的資料庫遷移來建立任何必要的資料庫表。

• 建立模型

模型是相關資料的唯一、确定的事實來源。它包含要存儲資料的基本字段和行為。也就是一個包含各種屬性(資料)和方法(行為)的類。

比如說:

在民意調查應用中,我們将建立兩個模型:Question和Choice。Question有一個問題和出版日期。Choice有兩個字段:選擇的文本和投票提示。每個Choice都與關聯Question。

在polls/models.py檔案中添加代碼

from django.db import models
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
           

在這裡,每個模型都是django.db.models.Model的子類。每個模型都有許多類變量,每個類變量代表模型中的資料庫字段。每一個字段都是一個Field的執行個體,不同的Field代表了不同類型的資料。

• 激活模型

為了包含應用,需要将應用的引用添加在設定的INSTALLED_APPS中,也就是将

polls.apps.PollsConfig添加到INSTALLED_APPS中

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
           
python manage.py makemigrations polls
           

表示對模型進行了一些修改,稱之為遷移(migration),會生成一個polls/migrations/0001_initial.py檔案,可以進行人工編輯。

可以看到SQL中,進行了那些遷移操作。

注:

1、資料表的名稱是将應用名稱和模型名稱的小寫組合起來自動生成的;

2、Django将附加"_id"到外鍵字段名稱。

3、該sqlmigrate指令**實際上并未在資料庫上運作遷移-而是将其列印到螢幕上**,以便您可以檢視SQL Django認為需要的内容。這對于檢查Django将要執行的操作或是否有需要SQL腳本進行更改的資料庫管理者很有用。

python manage.py check
           

檢查項目中是否存在任何問題,而無需進行遷移或接觸資料庫

python manage.py migrate
           

擷取所有尚未應用的遷移,并針對資料庫來運作它們,實際上就是根據之前的修改來改變資料庫。

模型更改的三步:

• 更改模型(在models.py中)。

• 運作為這些更改建立遷移 python manage.py makemigrations

• 運作以将那些更改應用到資料庫 python manage.py migrate

Django Admin介紹

admin是作為網站管理者存在

• 建立管理者使用者

python manage.py createsuperuser
           

之後按提示資訊輸入内容(在輸入密碼的時候,可能會有密碼無回顯的情況,隻需正常輸入,不會有其他影響,我的環境是Python3.8+Django3.0)

然後運作伺服器,輸入http://127.0.0.1:8000/admin/

會顯示管理者登入界面:

Django學習(2)

注意這裡輸入的不是,這個網頁出現的會是錯誤頁面:

Django學習(2)

修改polls/admin.py之後,應用就可以出現在管理者頁面上。

from django.contrib import admin
from .models import Question
admin.site.register(Question)
           

之後可以通過管理者界面對Question資料庫進行修改。