django模版
模板时可以根据字典数据动态改变html网页,是和视图层进行交互,由是涂层动态传递数据并渲染在html网页中的
html中使用{{变量名}}动态接收变量数据
django模板的配置:
- 在settings.py的对应dirs处配置路径,两种方法:
a. BASE_DIR / 'templates'
b. 在TEMPLATES外面import os->os.path.join(BASE_DIR , 'templates')
import os
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 配置模版url
'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默认不带templates文件夹的,需要自己创建,这里要注意是在最外层项目名下面创建,也就是和manage.py平级的
模板的加载方式
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是{{ name }}呀~</h1>
</body>
</html>
- 方式一
def test_html(request):
t = loader.get_template('test_html.html')
dic = {'name':'zhangsan','age':20}
html = t.render(dic)
return HttpResponse(html)
- 方式二
def test_html2(request):
dic = {'name': 'zhangsan', 'age': 20}
return render(request,'test_html.html',dic)
urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
# 测试带模板
path('test_html/', view.test_html),
# 测试带模板
path('test_html2/', view.test_html2)
]
如果报错django.template.exceptions.TemplateDoesNotExist: test_html.html
一定要重点检查以下部分:
- 你的templates有没有拼错
- templates是否是和manage.py平级, BASE_URL的路径是最外层项目名,如果使用绝对路径不报错的话,多半就是这里的问题了
- 检查html文件名有没有错