前面学了视图,我们可以在访问 localhost:8000/polls/ 看到我们返回的内容。
但是只返回一句话有什么用处?
今天我们来说下用模板来帮助我们返回更多的东西!
首先我们在 Django 项目 新建一个html 文件路径:
polls/templates/polls/datail.html
新建文件后里面写入:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
{% for i in list %}
<h1>{{h1}}</h1>
{% endfor %}
</body>
</html>
然后我们在视图文件 新建一个函数:
def detail(request):
title = "网页标题"
cont = list(range(1,11)) # 循环次数
h1 = "循环显示的内容"
return render(request, 'polls/detail.html', {'title': title, 'list':cont, 'h1': h1})
在应用目录里面的 urls.py 文件加一条路由
path('detail', views.detail, name='detail')
然后运行项目
python manage.py runserver
# 访问
# localhost:8000/polls/detail
!怎么报错了!
Exception Type: TemplateDoesNotExist
Exception Value:
polls/detail.html
没有找到文件??
对了对了。
我们在
mysite/settings.py 文件里面找到
INSTALLED_APPS = []
在列表尾部插入 'polls',
然后就可以显示文件了!!
一个一个说明:
先说 建立视图:
一个函数对应一个视图,主要我们原来用的是 httpResponse 来返回,现在使用 render 来返回区别是什么呢?
HTML模板文件:
Django 会给模板文件里面对应的关键字,在我们提取的时候进行替换。
具体的使用后面单独文章列出。
为什么出现错误?
第一次运行没有找到模板文件,因为我们提交的路径是应用的路径,而我们的应用并没有在项目的设置文件中添加进去,所以就是说我们只是在用url导入的时候当做模块导入,Django框架创建应用的时候不会自动导入进去。后面我们用别人的应用的时候也是需要手动导入的。