使用Django建立第一個應用程式
Step1)在Python虛擬環境下,使用指令「python manage.py startapp 應用程式名稱」建立Django應用程式
Step2)更改設定檔settings.py,安裝此應用程式,新增在第8行。
Step3)在應用程式news以下新增以下資料表,路徑為news\models.py。
資料庫相關欄位說明,參考以下網址。
https://docs.djangoproject.com/en/4.0/ref/models/fields/
Step4)在虛擬環境執行以下指令新增資料庫
建立資料表的格式檔案
> python manage.py makemigrations
新增資料表到資料庫,預設資料庫在檔案db.sqlite3
> python manage.py migrate
新增第一則新聞到資料表
> python manage.py shell
>>>from news.models import News
>>>n1 = News(title='高中生9月起延後上學!', content='高中生9月起延後上學!教部擬推四大變革 草案曝光',click=50)
>>>n1.save()
Step5)新增第二則新聞到資料表
> python manage.py shell
>>>from news.models import News
>>>n2 = News(title='高中作息 教育部大修', content='教育部昨宣布九月起高中生上學時間延後,預計三月公布細節。根據聯合報獨家取得草案,草案擬讓各校全校集合活動(如朝會)從每周不逾兩日,改為至多一次;學生自主決定是否參與早自習擬從每周兩日改成每周四日;早自習、午休或環境清掃時間等非學習節數活動,不得列入出缺席或處罰。',click=30)
>>>n2.save()
>>> n3 = News(title='莫德納宣布來台設子公司 支援台灣疫苗與藥物需求', content='莫德納要在台灣設立子公司了!莫德納今日發布聲明宣布台灣子公司設立計畫,將更負責支援台灣mRNA疫苗及治療藥物的需求;莫德納同時也將於香港、新加玻、馬來西亞設立據點。',click=10)
>>> n3.save()
Step6)取出所有新聞
>>> news = News.objects.all()
>>> news
<QuerySet [<News: 高中生9月起延後上學!>, <News: 高中作息 教育部大修>, <News: 莫德納宣布來台設子公司 支援台灣疫苗與藥物 需求>]>
Step7)修改news\views.py,新增函式news_list,從資料表News讀取資料,資料導向樣板news\templates\news.html
Step8)將templates\news.html移動到news\templates\news.html
第13行改成news {% for item in news %},因為news\views.py的第5行變數為news
Step9)新增urls.py的對應
在first\urls.py,使用井字號移除「path('news/', news),」,新增news應用程式的對應「path('news/', include('news.urls')), 」
Step10)新增news\urls.py,讓news/list/對應到news/views.py內的函式news_list。
執行結果