模板
成功將數(shù)據(jù)在首頁顯示之后睦刃,就要考慮如何在首頁中展示這些數(shù)據(jù)进宝,在 django 中鼓蜒,就是由模板(Template)決定如何向用戶展示數(shù)據(jù)的。
模板系統(tǒng)
?之前僅僅只是將取出的數(shù)據(jù)在首頁展示出來蝗羊,而用戶肯定不希望只看到干巴巴的一串字符串,所以就需要一個合理的方式仁锯,比如一個好看的頁面耀找。要改變頁面的樣子,可以使用模板系統(tǒng)业崖。
?模板系統(tǒng)將頁面的設(shè)計從 python 代碼中獨立出來野芒,只需要我們將事先寫好的代碼(模板文件)放到指定位置,django 就會在需要的時候加載這個文件双炕,并向其傳遞一個字典狞悲,字典中的是模板需要變量,最后生成一個HttpResponse
對象妇斤,返回給瀏覽器摇锋。這一過程 django 提供了一個函數(shù)render
,只需要將之前的視圖函數(shù)修改一下就好
視圖函數(shù)
# blog/views.py
from django.shortcuts import render
from .models import Category, Article
def index(request):
article = Article.objects.get(title='白云謠')
# 注意這里的列表已經(jīng)改為字典
list = {
article.title,
article.author,
article.abstratc,
article.category,
article.create_time
}
return render(request, 'blog/index.html', context=list)
-
render()
函數(shù)第一個參數(shù)是 django 封裝好的請求 -
render()
第二個參數(shù)是模板文件站超,django 將在目錄中找到這個文件并加載 -
render()
第三個參數(shù)是一個字典荸恕,存放了傳遞給模板的變量
模板文件
?模板文件需要事先寫好,并放在指定位置死相。首先在manage.py
文件同級目錄下創(chuàng)建一個templates
目錄融求,再在templates
中創(chuàng)建blog
目錄來存放blog
應用的模板文件,接下來在templates/blog/
中創(chuàng)建index.html
文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>fbckf</title>
</head>
<body>
<ul>
<li>{{ title }}</li>
<li>{{ author }}</li>
<li>{{ time }}</li>
<li>{{ abstract }}</li>
<li>{{ category }}</li>
</ul>
</body>
其實模板文件就是一個 HTML 文件媳纬,但其中與 HTML 文件不同的地方就在于 {{ title }} {{ time }}
這些由花括號括起來的變量双肤,這就是 django 規(guī)定的模板變量施掏,在渲染的時候钮惠,django 會用從視圖函數(shù)接收到的字典中的變量進行替換。
配置
?更新配置文件指定模板文件的目錄
# fbckf/settings.py
...
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# DIRS 指定模板目錄
'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',
],
},
},
]
...
指定模板目錄之后七芭,每次 django 會在指定目錄中搜索指定模板文件加載
BASE_DIR
是配置文件中定義好的項目根目錄os.path.join()
函數(shù)拼接出templates
目錄的地址
刷新頁面
總結(jié)
?templates
目錄不一定要放在項目根目錄中素挽,也可以放到各個應用的目錄中。需要做的步驟是一樣的狸驳,只需在blog
應用中創(chuàng)建tempaltes/blog/index.html
预明,之后配置文件也更改指定目錄就好了。只是這樣一來在管理維護的時候就顯得比較麻煩耙箍。