Django学习笔记(三)

模板

利用Django的模板,我们可以实现文档和表现形式的分离,实现MVC架构。

结构

在项目根目录底下创建 templates 目录并建立index.html文件,整个目录结构应如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
doodlexu@MacBook Web % tree
.
├── Web
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-39.pyc
│   │   ├── index.cpython-39.pyc
│   │   ├── settings.cpython-39.pyc
│   │   ├── urls.cpython-39.pyc
│   │   └── wsgi.cpython-39.pyc
│   ├── asgi.py
│   ├── index.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── db.sqlite3
├── manage.py
└── templates
└── index.html

3 directories, 14 files

index.html文件写入以下内容:

1
<h1>{{ hello }}</h1>

需要注意的是,模板文件里,变量的使用是双括号{{ content }}

接下来我们需要向Django说明模板文件的路径,修改Web/settings.py,修改 TEMPLATES 中的 DIRS 为 [os.path.join(BASE_DIR, ‘templates’)] ,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
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',
],
},
},
]
...

修改 index.py,增加一个新的对象,用于向模板提交数据:

1
2
3
4
5
6
7
from django.shortcuts import render

def index(request):
context = {}
context['hello'] = 'Hello World!'
return render(request, 'index.html', context)

修改路由文件urls.py:

1
2
3
4
5
6
7
from django.conf.urls import url

from . import index

urlpatterns = [
url(r'index/', index.index),
]

可以看到,这里使用 render 来替代之前使用的 HttpResponse。render 还使用了一个字典 context 作为参数。

context 字典中元素的键值 hello 对应了模板中的变量 {{ hello }}

再次访问 http://127.0.0.1:8080/index,可以看到页面:

index这样我们就完成了使用模板来输出数据,从而实现数据与视图分离。

接下来我们将具体介绍模板中常用的语法规则。

Django 模板标签

变量

模板语法:

1
2
view:{"HTML变量名" : "views变量名"}
HTML:{{变量名}}