作为一个网络框架,Django 需要一种方便的方式来动态生成 HTML,最常见的方法是依靠模板,一个模板包含了所需HTML输出的静态部分,以及一些特殊的语法,描述了如何插入动态内容。
配置Django模板引擎:在Django项目的设置文件中(settings.py),确保'Django.template.backends.django.DjangoTemplates'引擎被包含在TEMPLATES设置的'BACKENDS'中。
这是Django创建项目后默认的模板配置:
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',
],
},
},
]
下面是修改添加并设置了模板目录的配置项:
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',
],
},
},
]
告诉Django要启用Django自带的模板引擎。
"BACKEND": "django.template.backends.django.DjangoTemplates",
"APP_DIRS": True,
指定模板文件的存放目录为项目的子目录下templates
'DIRS': [os.path.join(BASE_DIR, 'templates')],# 修改位置
至此,Django模板就配置好了。
在模板文件(例如,template.html)编写模板文件:
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
{% if age %}
<p>Your age is {{ age }}.</p>
{% else %}
<p>Your age is not specified.</p>
{% endif %}
</body>
</html>
配置好路由:
urlpatterns = [
path("", views.index, name="index"),
path("test_view/", views.test_view, name="test_view"),
]
在上述示例中,视图函数test_view创建了一个包含'title'、'name'和'age'的上下文对象。然后使用render函数将模板文件名、上下文对象和请求作为参数传递。最后Django将渲染模板并返回最终的HTML响应。
我们启动Django的服务器来进行测试:python manage.py runserver
我们就可以正常的看到模板渲染出来的页面了。
以下是使用Django模板的基本步骤:
配置Django模板引擎:在Django项目的设置文件中(settings.py),确保'Django.template.backends.django.DjangoTemplates'引擎被包含在TEMPLATES设置的'BACKENDS'中。
创建模板文件:在Django项目的一个目录中,创建一个包含HTML代码的模板文件。通常,模板文件位于一个名为'templates'的子目录中。
定义模板变量:在模板中,可以使用双大括号({{ variable_name }})来包围变量名,以将其插入到模板中。
控制流和逻辑:在模板中,可以使用控制结构(如if语句和for循环)来控制显示的内容。
继承和包含:Django模板还支持模板继承和包含,可以在一个模板中使用{% extends %}和{% include %}指令来重用和组合模板代码。
上下文传递:在Django视图函数中,可以通过上下文对象将数据传递给模板。上下文对象是一个包含键值对的字典,其中键是在模板中使用的变量名称,值是要传递给模板的实际数据。
渲染模板:在Django视图函数中,使用Django的渲染器(render)将模板和上下文对象结合起来,生成最终的HTML响应。
参考文档: