上面我们有说过,用户发送请求的时候,视图会返回一个响应,响应可以是一个重定向,一个404错误,一个XML文档,一张图片或者是一个HTML内容的网页。前面几个返回的信息比较有限,我们重点更多是放在HTML内容的网页。我们把这样的页面按规范写好,然后都放在项目根目录下的templates文件夹里,这样的页面,我们称之为"模板"页面。
Django做为一个WEB框架,需要一种很便利的方法去动态生成HTML网页,因为有了模板这个概念。模板页面包含一些基础的HTML代码和一些特殊的语法,这些特殊的语法主要用于如何将数据动态的插入HTML页面中。
这些特殊的语法我们把它做变量、标签。变量是模板中最基本的组成单位。这些模板变量由视图函数生成的,然后通过上下文传递到模板里,然后由浏览器渲染出来。
上面的都是理论, 我们不管它。我们直接说如何在模板里调用视图函数传过来的变量。这些变量有很多种类型,也就是Python支持的数据类型比如:普通变量、列表、字典等。
在这之前我们要先设置好模板路径,把这个路径在settings里设置好,不然就没法访问我们的模板目录,之前我在文章:基础配置 里已经设置好了,下面我们直接使用就行。更多关于settings的配置可以查看文章:全局配置settings详解
一、变量
1、在文件myblog/urls.py里设置一个URL:
myblog/urls.py urlpatterns = [ ... path('', views.index), #把原来的views.hello修改成views.index ''留空,表示为首页 ... ]
2、在文件blog/views.py里添加一个视图函数:
blog/vews.py #添加一个函数 def index(request): #添加两个变量,并给它们赋值 sitename = 'Django中文网' url = 'www.django.cn' #把两个变量封装到上下文里 context = { 'sitename': sitename, 'url':url, } #把上下文传递到模板里 return render(request,'index.html',context)
3、在项目根目录下templates文件夹里新建一个文件index.html,输入如下内容:
templates/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>MyBlog</title> </head> <body> <h3>网站名:{{ sitename }}</h3> <h3>域名:{{ url }}</h3> </body> </html>
然后启动项目,在浏览器里访问 http://127.0.0.1:8000 就可以查看到我们在视图函数里我们设置的内容。
代码里的{{ sitename }}和{{ url}}就是模板变量,变量的数据类型是字符串或整形。在Django模板中,变量需要用{{ 变量名}}来显示。
二、列表
1、在视图函数index里添加如下代码:
blog/views.py def index(request): sitename = 'Django中文网' url = 'www.django.cn' #新加一个列表 list=[ '开发前的准备', '项目需求分析', '数据库设计分析', '创建项目', '基础配置', '欢迎页面', '创建数据库模型', ] context = { 'sitename': sitename, 'url':url, 'list':list, #把list封装到context } return render(request,'index.html',context)
2、在模板文件index.html添加如下代码:
templates/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>MyBlog</title> </head> <body> <h3>网站名:{{ sitename }}</h3> <h3>域名:{{ url }}</h3> {#新下面的代码#} <div> <ul> <h4>Blog教程目录:</h4> {% for list in list %} <li>{{ list }}</li> {% endfor %} </ul> </div> </body> </html>
然后我们在浏览器里刷新页面,显示如下:
新加代码里{% for list in list %} 的{% for %}属于Django模板的内置标签,它可以遍历输出变量的内容。
三、字典
1、在视图函数里添加如下代码:
blog/views.py def index(request): .... #在来的基础上新加一个字典 mydict={ 'name': '吴秀峰', 'qq': '445813', 'wx': 'vipdjango', 'email': '[email protected]', 'Q群': '10218442', } context = { ... #把mydict封装到上下文 'mydict':mydict, } return render(request,'index.html',context)
2、在模板文件index.html添加如下代码:
templates/index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>MyBlog</title> </head> <body> ... <!-- 新加如下代码 --> <div> <ul> <h4>Blog教程作者信息:</h4> {% for key,values in mydict.items %} <li>{{ key }}:{{ values }}</li> {% endfor %} </ul> </div> </body> </html>
新加的代码里,{% for key,values in mydict.items %} 是遍历输出字典里的 key和values的内容。
我们刷新页面,就能看到新的效果:
上面的就是在模板里调用变量、列表、字典的方法。当然,模板里还有许多内置的标签和过滤器。这里就不一一介绍。后面我们用上的时候,我会做特别的提醒。
上述代码我已经上传到服务器,请大家自行下载查看:
标签:index,sitename,list,Django,url,html,django,模板 From: https://www.cnblogs.com/yoloooo/p/17614437.html