Django學習筆記(2)建立應用程式

2021-09-23 07:37:29 字數 4280 閱讀 1204

learning_log$ source ll_env/bin/activate
2.1 定義模型

每當需要修改「學習筆記」管理的資料時,採取三個步驟:

修改models.py,

對learning_logs呼叫makemigrations修改資料庫,

讓django遷移專案migrate

step1. 修改models.py

models.py檔案匯入了模組models, 並且可以建立自己的模型。在**層面,模型就是乙個類,包含屬性和方法。

建立類topic, 繼承model, topic有兩個屬性,text和date_added。

屬性text是 models.charfield–由文字或字元組成的資料,儲存少量的文字,要告訴django為該資料預留多少空間。

屬性date_added是models.datetimefield,用於記錄日期和時間,傳遞實參auto_now_add=true,可以自動記錄當前日期和時間。

方法__str__()顯示模型的簡單表示。

from django.db import models

# create your models here.

class

topic

(models.model)

:"""使用者學習的主題"""

text = models.charfield(max_length=

200)

date_added = models.datetimefield(auto_now_add=

true

)def

__str__

(self)

:"""返回模型的字串表示"""

return self.text

2.2 啟用模型

讓 django將應用程式包含到專案中,修改settings.py [

'django.contrib.admin'

,'django.contrib.auth'

,'django.contrib.contenttypes'

,'django.contrib.sessions'

,'django.contrib.messages'

,'django.contrib.staticfiles'

,'learning_logs',]

讓django修改資料庫,終端執行makemigrations命令。建立了0001_initial.py的遷移檔案。

(ll_env)learning_log$ python3 manage.py makemigrations learning_logs
讓django替我們遷移專案:

(ll_env)learning_log$ python3 manage.py migrate
2.3 django管理**(admin site)

2.3.1 建立超級使用者

建立具有所有許可權的使用者:超級使用者。根據命令提示輸入使用者名稱和密碼。

(ll_env)learning_log$ python3 manage.py create superuser
2.3.2 向管理**註冊模型

在admin.py檔案中,註冊模型topic.

from django.contrib import admin

from learning_logs.models import topic

# register your models here.

admin.site.register(topic)

使用超級使用者訪問管理**:http://localhost:8000/admin/

注意:如果瀏覽器上顯示網頁不可用,確認終端視窗的django伺服器是否正常執行,如果沒有,先啟用虛擬環境,然後執行命令runserver。

2.4 定義模型 entry

需要為使用者可在學習筆記中新增的條目定義模型,多個條目可以與乙個特定的主題相關聯,稱為多對一的關係。

修改models.py

entry也模型繼承了django基類model.

屬性topic是乙個foreignkey(外來鍵)例項。外來鍵是資料庫的術語,引用了資料庫的一條記錄。這些**可以將每個條目關聯到特定的主題,每個主題建立時,都給它分配了乙個鍵(id),需要在兩項資料之間建立聯絡時,django使用與每項資訊相關聯的鍵。

屬性text是models.textfield()例項,這種不需要限制長度。

屬性date_added,讓我們能夠按照建立順序呈現條目,並在條目旁邊放置時間戳。

在entry類中巢狀了meta類,meta用於管理模型的額外資訊。

__str__方法告訴django, 返回的資訊怎樣呈現。

class

entry

(models.model)

:"""學到的有關某個主題的具體知識"""

topic = models.foreignkey(topic, on_delete=models.cascade)

text = models.textfield(

) date_added = models.datetimefield(auto_now_add=

true

)class

meta

: verbose_name_plural =

'entries'

# 在需要的時候使用entries表示多個條目。

def__str__

(self)

:"""返回模型的字串表示"""

return self.text[:50

]+"..."

2.5 遷移模型

(ll_env)learning_log$ python3 manage.py makemigrations learning_logs

(ll_env)learning_log$ python3 manage.py migrate

2.6 向管理**註冊模型

from django.contrib import admin

from learning_logs.models import topic, entry

# register your models here.

admin.site.register(topic)

admin.site.register(entry)

2.7 django shell

通過互動式環境django shell檢視資料。

(ll_env)learning_log$ python3 manage.py shell

from learning_logs.models import topic

topic.objects.all()

topic.objects.all()返回的是乙個列表,稱為查詢集queryset.

可以像遍歷列表一樣遍歷查詢集:

(ll_env)learning_log$ python3 manage.py shell

from learning_logs.models import topic

topics = topic.objects.all()

for topic in tipics:

print(topic.id, topic)

知道topic.id後可以根據id獲取該物件並檢視其屬性:

t = topic.objects.get(id=1)

t.text

t.date_added

t.entry_set.all()
要通過外來鍵關係獲取資料,使用相關模型的小寫名稱、下劃線和單詞set.

確認**能獲取所需的資料,可以使用shell. 如果**在shell中的行為符合預期,那麼它們在專案檔案中也能正確的工作。在簡單的shell環境中排出故障比在生成網頁的檔案中排除故障要容易的多。

注意:每次修改模型之後,都需要重啟shell,才能看到修改的效果。退出shell對話,ctrl+d, 如果是windows系統,ctrl+z, 然後回車。

Django 建立應用(django學習04)

1 開啟命令列,切換到manage.py同級目錄 介紹一下每個模組的功能和作用 migrations 資料一致 遷移 模組,和資料庫有關,一般不動 admin.py 當前應用的後台管理系統配置,django自帶 models.py 資料模組,跟建立資料庫有掛,使用orm框架,類似於mvc中的mode...

Django學習筆記2

路由 檢視函式 瀏覽器訪問 一級路由 二級路由 常用的屬性 例子from django.db import models db database 資料庫 models 模型 學生表的 用類驅動資料 class user models.model id models.autofield primary...

Django建立應用

開啟命令列,進入專案中manage.py同級目錄 應用名 新增應用名到settings.py 中 django.contrib.admin 資料移植模組。自動生成 該應用的後台管理系統配置 該應用的一些配置,django1.9以後自動生成 資料模組,使用orm框架,類似於mvc中的model 自動化...