iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0

前言

講了這麼久我們終於把views告一段落,今天要開始進入MTV的T,也就是Templates。
在講Templates時我預設大家都對HTML有一定的認知,所以暫且不考慮再拉出來講,如果還不熟的朋友們,可以Google了解一下!!

何謂Templates

作為一個網路框架Django需要一個比較簡單的方式,來動態生成HTML,而其中最常見的方式就是使用Templates。
在我們前面有提到,Templates負責的部分就是MVC的view,也就是將獲取的資料呈現給使用者看。
Template除了一般將靜態的HTML輸出,也有插入動態內容的特殊語法Django Template Language,他能夠幫助我們做很多在Template的邏輯操作。
那我們今天會先從輸出靜態HTML開始談~

創建第一個Templates

首先我們要先在Django_project最上層的資料夾創建一個Folder名為Templates,並在裡面再建立一個資料夾用來分類不同app的templates,因此取名為Django_app和我們app的名稱一樣。

https://ithelp.ithome.com.tw/upload/images/20220919/20150927zqv36CWRRs.png

之後在裡面創建一個html檔案,名為fist_page.html。
最後呈現的資料夾階層就會長得像這樣子。

https://ithelp.ithome.com.tw/upload/images/20220919/20150927sIQVwAoiRM.png

完成之後我們要到Django_project的setting裡,將我們新創的Templates 位置告訴Django,這樣當我們正確呼叫的時候才能找到我們要用的Templates。我們在setting中找到TEMPLATES的設定檔,可以看到BACKEND中有預設的DjangoTemplates路徑,但下面還有一個空的DIRS,可以讓我們告知Django我們創建的Templates的位置,我們將我們的templates路徑填入,這時候可以使用Django為你寫好的你的Django專案路徑,因此填入BASE_DIR加上"Templates"就完成了。這時候他就會自動到你的Tempates裡找。

若沒有告知Django路徑的話,它就會報錯找不到Templates。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

完成後我們就可以進入fist_page.html進行編輯。
首先我們可以先使用doc來呼叫預設的html樣板。
並在body寫入Hello Django!

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Hello Django!</h1>
</body>
</html>

這時候我們回到Django_app的urls.py和views.py,我們建立一個簡單不帶參數傳遞的path,並在views中使用render來將我們Templates的頁面呈現出來。

#urls.py

from django.urls import path                                        
from . import views

urlpatterns = [
   path("first/", views.first)
]
#views.py

from django.urls import reverse
from django.shortcuts import render,redirect
from django.http import HttpResponse, HttpResponseNotFound, Http404, HttpResponseRedirect

def first(request):
    return render(request, "Django_app/First_page.html")

這時候打開瀏覽器進入 http://127.0.0.1:8000/hello/first/ 就會看到
https://ithelp.ithome.com.tw/upload/images/20220918/201509273q1GiCusSw.png

這樣就完成第一個Templates了,是不是很簡單的,明天我們會更詳細的來談談Template Language,我們明天見囉!

參考資料&推薦閱讀

https://docs.djangoproject.com/en/4.1/topics/templates/


上一篇
Day10 -Urls and Views -Redirect URL
下一篇
Day-12 -The Django template language -變數的傳遞
系列文
從0 到 50 初探 如何使用Django 架構出一個網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言