前文《(十一):Django基础之创建应用(上)》 讲解了如何如何在Django项目创建一个自定义的应用,并通过创建这个应用的示例让大家对URL路由层和Views视图层之间怎么协同工作有了一个更深入地掌握。今天我们继续利用上文创建的应用test_mgmt
,展开对Django的Templates模板层的学习,从而让大家对Views视图层与Templates模板层的协同工作有一个大致的了解。
之前的举例说明中都是简单地在视图层通过django.http.HttpResponse()
来输出要显示的内容,还记得这块的讲解吧?如记不清楚烦请自行翻看上文进行重温。但是实际工作中我们都是希望自己页面能在显示必要文字内容之余再丰富些,如:添加一个表格、弄个柱状图、上一个轮播图、调调样式颜色等,这种情况下之前的方法就会立马让你感到捉襟见肘了。怎么办呢? 这个时候Django的Templates模板层就要大展身手了。它可以让你轻松管理起前端页面,并让页面内容丰富美观的盼望成为可能。
一、了解Django的Templates配置
Templates配置再创建Django项目时就自动在settings.py
中默认设置好了。如果你想自定义Templates文件的位置,可以通过修改TEMPLATES
设置项DIRS
来实现:
二、创建第一个网页
按照下图演示通过右击鼠标在Template文件夹中创建一个名为home.html
的网页:
网页创建好后PyCharm会自动在这个网页文件中填充一段demo代码,请按照上图所示将<title>
元素的内容改为"mysite"
,并在<body>
中添加 <p>{{name}}</p>
这段代码。
三、改动test_mgmt应用的views.py
在test_mgmt/views.py
中添加如下代码:
# test_mgmt/views.py
from django.shortcuts import render
def home(request):
name="欢迎访问mysite平台主页!"
return render (request, "home.html", {"name":name})
四、test_mgmt应用增加一个url链接
在test_mgmt/urls.py
中urlpatterns中添加配置:path('home/',views.home)
:
启动mysite
Django服务后,浏览器打开链接:http://127.0.0.1:8000/test_mgmt/home/
这个时候你会看到网页名称已经显示为我们在网页<title>
设置的内容:mysite
,网页的内容也正确显示为我们在test_mgmt/views.py.home()
方法中变量name
定义的值。通过刚才一系列并不复杂的操作,我们可以get到四个基础知识点:
- 1、网页中
<head>
下的<title>
元素用来定义网页的显示名称,会显示在浏览器的标题栏中; - 2、网页中
<body>
元素的内容会显示在浏览器上; - 3、网页是通过
{{变量名}}
的方式来接收Views视图层传过来的变量参数; - 4、视图方法通过
django.shortcuts.render()
将变量参数按照{"HTML变量名" : "views变量名"}
方式给Templates模板层返回一个渲染后的HttpResponse对象
这里既然用到并提到了render()
,那么就介绍一下这个函数。
render()
函数的作用: 结合一个给定的模板和一个给定的上下文字典, 并返回一个渲染后的HttpResponse对象。
源码如下图所示:
参数:
- request: 用于生成响应的请求对象
- template_name: 要使用的模板的完整名称, 可选的参数
- context: 添加到模板上下文的一个字典. 默认是一个空字典. 如果字典中的某个值是可调用的, 视图将在渲染模板之前调用它.
- content_type: 生成的文档要使用的MIME类型. 默认为
DEFAULT_CONTENT_TYPE
设置的值. 默认为text/html
- status: 响应的状态码. 默认为
200
- useing: 用于加载模板的模板引擎的名称
看到这个参数介绍,我突然想试试如果status设置为404会是什么结果呢?于是,我将viwes的home()做了如下修改:
# test_mgmt/views.py
def home(request):
name = "欢迎访问mysite平台主页!"
return render(request, "home.html", {"name": name},status=404)
保存后,通过F12激活浏览器开发模式后再访问:http://127.0.0.1:8000/test_mgmt/home/
:
通过上图可以看到,页面和标题都显示正常,但是通过接口返回的状态码已经变成了404
了,而不是之前的200
了。render()
函数尝试到此,请将代码中的status=404
删掉,否则会影响后续示例的效果。
通过本文的讲解,我们知道了如何配置Django的Templates模板层,以及在该层创建网页;如何利用视图层函数来达到我们想要的前端网页内容渲染的目的;以及如何将视图层获取到参数传递给模板层的方法。希望经过这个示例的实际操作能让大家对Views视图层与Templates模板层的协同工作有一个初步大致的了解。下文我们会引入模型层的,并通过一个示例,将URL路由层 - Views视图层 - Models模型层 - Templates模板层全部连接起来,让大家对他们的协同工作能有一个更深入更直观的认识。
谢谢关注《一步步玩转测试平台开发》系列连载,坚持原创,分享实用干货,敬请期待后面的精彩!