在前面的介绍中我们都是用简单的 django.http.HttpResponse来把内容显示到网页上,本节将讲解如何使用渲染模板的方法来显示内容,即调用精美的HTML页面。模板的创建既可以在项目下创建一个templates目录来存放模板,也可以在app应用中新建一个templates文件夹来存放各个模板。

模板配置

要注意的是不管是以哪种方式创建,都要记得在settings中进行配置,不然在调用视图函数时是找不到你指定的是哪个模板。如果是在项目下创建的模板目录,则在settings中的TEMPLATES中的DIRS进行配置,输入创建模板的路径。如果是在app应用中创建的模板,把 app名 加入到 settings.INSTALLED_APPS中。

项目下的templates配置

app下的templates的配置

模板渲染

模板渲染利用的是django.shortcuts.render方法,放在视图函数的return语句中。render方法的第一个参数是request关键字,第二个参数是模板的路径,第三个可选参数是context,以字典的格式作为参数传递给模板,模板可以通过模板变量来接收,模板变量在下面会介绍。

注意:我们一般将模板放在app下的templates中,Django会自动去这个文件夹中找。但 假如我们每个app的templates中都有一个 index.html,当我们在views.py中使用的时候,直接写一个 render(request, 'index.html'),Django 能不能找到当前 app 的 templates 文件夹中的 index.html 文件夹呢?(答案是不一定能,有可能找错)下面介绍下模板的查找机制是怎样的。

Django 模板查找机制: Django 查找模板的过程是在每个 app 的 templates 文件夹中找(而不只是当前 app 中的代码只在当前的 app 的 templates 文件夹中找)。各个 app 的 templates 形成一个文件夹列表,Django 遍历这个列表,一个个文件夹进行查找,当在某一个文件夹找到的时候就停止,所有的都遍历完了还找不到指定的模板的时候就是 Template Not Found (过程类似于Python找包)。这样设计有利当然也有弊,有利是的地方是一个app可以用另一个app的模板文件,弊是有可能会找错了。所以我们使用的时候在 templates 中建立一个 app 同名的文件夹,这样就好了。即在每个app中的 templates 文件夹中再建一个 app 的名称,仅和该app相关的模板放app/templates/app/ 目录下面。

下面在music这个app中实现模板的渲染,首先在music下创建一个目录templates及其子目录music来存放一个模板index.html,再在settings文件中进行配置,再在视图文件中写一个视图函数利用render方法来调用这个模板。

模板变量

模板变量用来接收视图函数传来的值,传来的是一个字典格式。字典中的key在模板中充当变量名,value可以是字典、模型、函数、列表、类方法等。在模板中,变量加点有着特殊的含义,其表示查找。故若传来value是一个字典或列表,可以通过变量.key或变量.下标来取特定的值。

模板变量的语法规则: {{ 变量名 }} 。

下面举一个小例子,传递一个列表和一个字典,然后再模板中分别取一个展示。

模板过滤器

作用: 对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。

语法规则:{{ 变量名|过滤器:参数 }} ,变量名与过滤器通过管道符|分隔开,过滤器的参数与过滤器通过冒号分隔。

下图是一些常用过滤器的总结。

注意:default无论是真的None还是空字符,都会返回一个False,而default_if_none在变量真的为None时才会返回False,然后使用提供的默认值。

date和time的格式化字符如下图所示:

下面的小例子是时间的过滤

floatformat过滤器用于过滤浮点型数据,默认保留一位小数,也可以指定保留小数的个数。

safe过滤器用于关闭变量的自动转义,变量的自动转义就是将<、>、&、空格等转为前端的特殊字符。

转载于:https://www.cnblogs.com/longwhite/p/10397674.html

Django2.0——模板渲染(一)相关推荐

  1. php 模板渲染,ThinkPHP6.0模板渲染 - ThinkPHP6.0快速开发手册(案例版) - php中文网手册...

    模板渲染生成页面 模板渲染, 其实就是生成前端页面 模板路径 默认情况下,框架会自动定位你的模板文件路径,优先定位应用目录下的view目录,这种方式的视图目录下就是应用的控制器目录. 单应用模式 ├─ ...

  2. 对于模板渲染的页面,如何针对渲染出来的对象添加事件

    我们在javaweb编程中往往从数据库中将数据取出来,使用模板渲染到页面上,渲染的数据上我们又希望可以产生不同的响应对于这样的问题,我们应该怎样实现 场景的描述: <ul class=" ...

  3. flask mysql项目模板渲染_[Flask] Flask问题集(后端模板渲染项目)

    1.redirect和render_template的区别? redirect:重定向,会改变url render_template:模板渲染,用模板来渲染当前页,不会改变url 2.关于 'g' 对 ...

  4. 【django轻量级框架】(Python3.6.8+Django2.0)第一个Django项目与基础环境搭建

    一.前言 Django 是一个开放源代码的 Web 应用框架,由 Python 写成.采用了 MTV 的框架模式,即模型 M,模板 T 和视图 V.当然,网上也有人说 Django 采用了 MVC 的 ...

  5. Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件

    一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建: 这样一个Django项目就创建完成了,上面可以看到项 ...

  6. python渲染光线_python模板渲染配置文件

    python的mako.jinja2模板库,确实好用!这里做个笔记,好记性不如烂笔头. #!/usr/bin/env python #encoding=utf-8 import sys,yaml    ...

  7. png文件头_Golang GinWeb框架7静态文件/模板渲染

    简介 本文接着上文(Golang GinWeb框架6-绑定请求字符串/URI/请求头/复选框/表单类型)继续探索GinWeb框架 静态文件服务 package mainimport ( "g ...

  8. django2.0实现数据详情页展示的流程

    django2.0实现数据详情页展示的流程 思路整理 1 先在urls.py中,定义路由获取的格式 url(r'^detail/(\d+)/$', views.blog_detail), 2 然后在v ...

  9. 使用arttemplate js模板引擎,直接用模板渲染,减少字符串拼接。

    html: <div class="box"></div><script id="t1" type="text/html ...

最新文章

  1. 文档工具GitBook使用
  2. 利用ListView实现新闻客户端的新闻内容图文混排
  3. 第25月第3天 Mxshop项目记录01
  4. 配置×××服务器使用L2TP/IPSEC协议
  5. VC++界面美化---模仿MS Office 选项对话框
  6. loader-wizard.php,安装ioncube扩展
  7. win7 此计算机无法连接到家庭组,Win7旗舰版无法进入家庭组如何处理
  8. springMVC配置多数据源
  9. 商城店铺入驻系统_商家入驻开设店铺功能逻辑与流程设计
  10. OSChina 周四乱弹 ——一周五天在诈尸
  11. java计算机毕业设计教师教学质量评估系统MyBatis+系统+LW文档+源码+调试部署
  12. 计算机网络量化噪音是怎么消除的,数字图像噪声消除算法研究(可编辑).doc
  13. SQL全方位攻略:之数据库历史、数据库基本概念和相关术语,以及常见的数据库类型介绍
  14. 中国化肥行业运行形势与投资策略研究报告2022版
  15. CTF__(1)技术论坛(电子书籍,学习视频)
  16. Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915解决办法
  17. 告诉你外语学习的真实方法及误区分析(整理)
  18. 通俗易懂玩高数(2)—— 拉格朗日中值定理的证明
  19. 智慧灌区管理平台-大中型灌区信息化监测系统
  20. 结构化分析和面向对象分析的区别 例子_企业微信和微信的区别在哪里?

热门文章

  1. 【平行驾驶】王飞跃 | 人工智能与智能汽车:在CPSS中驶向第三轴心时代
  2. 麦肯锡:企业数字化转型不要被技术“绑架”
  3. 互联网让我们变笨了吗:过去10年关于大脑的11个有趣发现
  4. 美媒评2018年全球十大突破性技术:AI和人工胚胎上榜
  5. 致研究者:2018 AI 研究趋势
  6. 洪小文:以科学的方式赤裸裸地剖析人工智能
  7. “技术崇拜”与“技术恐惧”都会阻碍 AI 创新,“技术节制”才是正道
  8. AI 三大教父齐聚深度学习峰会,讨论尖端研究进展
  9. Java五年,已财富自由,美人在手!
  10. 学习如何写 Bug 的一天! | 每日趣闻