[TOC]
之前我們在視圖函數里返回的是一個HttpResponse類的實例,但是我們的網頁不可能只有HttpResponse返回的一句話,我們也不可能每次需要改頁面樣式都要操作python代碼。
django 對這個問題提供了一個很好的解決方案,叫做模板系統。django 要我們把頁面樣式寫到一個文件里,然后 django 自己會去讀取這個文件,再把讀取到的內容傳給 HttpResponse。
在之前創建的 `book` 應用下新建 目錄 `template` ,模板相關代碼會在此做演示。
## 配置
在 `settings.py` 文件中 `TEMPLATES` 項指定了如何渲染模板。
```python
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
]
```
APP_DIRS項被設置為了True,代表django會在每個app目錄內尋找 `templates` 子目錄,而我們的 `templates` 目錄是放在 `book` 應用下的,所以不需要我們進行DIRS的設置。而如果templates要放在其他文件夾下,則需要設置DIRS項。
## 使用
### 1. 創建模板
在 `templates` 目錄下新建文件 `index.html` ,寫入代碼:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ book }}
</body>
</html>
```
類似 `{{ }}` 這樣的格式叫做模板標簽,會在后邊有詳細的講解。
### 2. 創建視圖函數
在 `book` 目錄下的 `views.py` 文件下創建視圖函數。
```
from django.http import HttpResponse
def index(request):
template = loader.get_template('index.html')
context = {"book": "邊城浪子"}
return HttpResponse(template.render(context, request))
```
新建 `urls.py` 文件配置路由
```
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^index/', views.index, name="book")
]
```
在項目目錄下的 `urls.py` 注冊子路由
訪問路徑 [http://127.0.0.1:8000/book/index/](http://127.0.0.1:8000/book/index/) k可以看到返回的結果。
#### render
由上邊的示例可以看出,使用模板有三個步驟
1. 獲得模板
2. 加載上下文
3. 渲染模板,返回響應
這三個步驟是很常用的步驟,所以django為我們提供了快捷完成的方式 `render`。
導入包:
```
from django.shortcuts import render
```
修改視圖函數
```
from django.shortcuts import render
def index(request):
context = {"book": "邊城浪子"}
return render(request, 'index.html', context)
```
render的常用參數:
- request:固定參數
- template:模板文件的路徑
- context:context數據
其他參數:
- content_type: 生成的文檔要使用的MIME 類型。默認為DEFAULT_CONTENT_TYPE 設置的值。
- status: http的響應代碼,默認是200.
- using: 用于加載模板使用的模板引擎的名稱。
- 1.介紹
- 2.工程搭建
- 2.1.環境配置
- 2.2.創建工程
- 2.3.創建子應用
- 2.3.1.pycharm打開項目
- 2.4.創建視圖
- 3.基本配置
- 3.1.settings基本配置項
- 3.2.路由配置
- 4.請求響應
- 4.1.request
- 4.2.response
- 4.3.cookie
- 4.4.session
- 5.類視圖中間件
- 5.1.類視圖
- 5.2中間件
- 6.數據庫
- 6.1.數據庫配置
- 6.2定義模型類
- 6.3數據庫遷移
- 6.4數據庫操作
- 6.5查詢集
- 6.6模型管理器
- 7.模板表單
- 7.1使用模板
- 7.2模板標簽
- 7.3表單
- 8.后臺管理
- 8.1Admin
- 8.2自定義模型類樣式
- 8.3列表頁