[oldboy-django][2深入django]django模板使用函数
1 模板引入子html--include
模板引擎
- 母版 - include,导入公共的html
a. 用法:{% include "pub.html" %}, pub.html还可以添加 {{ name }}
b. 一个页面可以导入多次,一个html只能有一个母版
c.样例
# public.html
<div class="public">
<div class="content">
{{ userinfo }}
</div>
</div> # app02_test.html
<h3>include</h3>
{% include "public.html" %}
{% include "public.html" %} # views
def test(request):
return render(request, 'app02_test.html', {'userinfo':{'k1':'v1', 'k2': 'v2'}})
2 模板使用(渲染数据 + 调用函数)
- 模板
- 接收被渲染数据
views参数传递:{'userInfo': {'k1': 'v1', 'k2':'v2'}}
前端接收可以
{% for v in userInfo.values %}
{% endfor %}
或者
{% for k,v in userInfo.items %}
{% endfor %}
或者
{% for k in userInfo.keys %}
{% endfor %} - 模板执行函数, 而且函数不是js函数,而是py里面的函数
a.{{ name|upper}} // name是后台传递给前端的带渲染数据,upper是转换大写函数
3 自定义函数,供模板调用
- 自定义模板filter
a.在应用创建文件夹templatetags
b.创建任意py文件, xx.py
from django import template
register = template.Library() @register.filter
def my_upper(value):
return value.upper()
c.在模板文件导入xx.py
开头导入 {% load xx %} d.在模板使用函数
{{ 'liuzhipeng'|my_upper}} ,前面的liuzhipeng为参数传递给my_upper e. 一定要注册app_02 - 自定义tag
a.在应用创建文件夹templatetags
b.创建任意py文件, xx.py
from django import template
register = template.Library() @register.simple_tag
def my_concat(arg1, arg2):
return arg1 + arg2
c.在模板文件导入xx.py
开头导入 {% load xx %} d.在模板使用函数tag
{% my_concat "alex" "is sb" %} e. 一定要注册app_02 - filter 和simple_tag区别
a. filter最多能有两个参数
b. filter模板调用方式: {{ 参数|函数}}
c. simple_tag参数个数无限制
d. simple_tag使用方式:{% 函数 参数 参数 %}
e. {% if name|my_bool %} 可以这样使用filter,而tag则不能
f. simple_tag反向生成url
{% url 'url别名' %}
g. 可以{% if name|my_bool %}, 但是simple_tag不行
[oldboy-django][2深入django]django模板使用函数的更多相关文章
- Django(4)html模板继承、模板导入、分页实现
1.获取所有请求信息 导入模块:from django.core.handlers.wsgi import WSGIRequest request.environ:包含所有的请求信息,可以打印看一下, ...
- Django基础,Day10 - template 模板引擎与路径设置
作为一个Web框架,Django需要一个方便的方式来生成动态的HTML.最常见的方法依赖于模板.模板包含所需的HTML输出的静态部分以及一些特殊的语法描述如何插入动态内容. Django框架后端默认支 ...
- Day18 Django之路由系统、模板语言、Ajax、Model
一.路由系统 1.创建Django项目 django-admin startproject day18 cd day18 python3 manage.py startapp app01 2.app0 ...
- django第二个项目--使用模板
第一步: 创建新项目secondproject cd /tmp/django-admin startproject secondeproject 第二步: 创建一个用于放置模板文件夹 cd /tmp/ ...
- [Django 1.5] jQuery/Ajax 在Django使用 ,如何更新模板里里变量
最近希望实现一个页面局部刷新的功能,于是开始查阅ajax资料.幸好现在ajax很多功能都封装在jQuery这个库里面,我们可以很方便去调用.通过学习几个简单的小例子,可以实现简单的前端代码更新,还有重 ...
- django在视图中使用模板
在视图中使用模板 在学习了模板系统的基础之后,现在让我们使用相关知识来创建视图. 重新打开我们在前一章在 mysite.views 中创建的 current_datetime 视图. 以下是其内容 ...
- Django将request对象传入模板配置
对于很多时候,需要从模板中获取很请求中很多内容,比如当前请求的url,当前的session变量中的某个值,这时候我们可以通过配置可将request对象传递进模板. django1.10版本: sett ...
- Django中的可复用模板
将文件转换成可复用的模板,便可以通过模板的基本布局来设计未来项目. startproject的模板是一个目录或zip文件,当命令运行时形成Django模板. 默认情况下,所有Python源文件都会被制 ...
- Django 学习第三天——模板变量及模板过滤器
一.模板路径的查找: 查找顺序:(现在哪找到就用那个) 首先在主目录的 setting.py 文件里的 TEMPLATES 中的 DIRS 里找: 其次如果 DIRS 中的 APP_DIRS : 'T ...
- python 全栈开发,Day69(Django的视图层,Django的模板层)
昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...
随机推荐
- HDU 1010 Tempter of the Bone 骨头诱惑(DFS+剪枝)
题意: 必须在第t秒走到格子D上,S为起点,D为终点,点就是可以走,X就是墙. 思路: 将迷宫外围四面都筑墙‘X’.深度搜索+奇偶剪枝,再加一个剪枝“无法在指定时间内到达”. #include < ...
- java Vamei快速教程19 嵌套类
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 到现在为止,我们都是在Java文件中直接定义类.这样的类出现在包(package) ...
- 用户在设置密码时,提醒请输入半角字符(vue+element+valid)
要保证callback()只有一个出口 rules:{ newPassword: [{validator:(rule,newPassword,callback)=>{ var all = fal ...
- Objective-C try/catch异常处理机制原理。
try-catch-finaly finally在任何情况下都会执行(不管有没有异常),属于整个体系的附属. 基本思想是跳到捕获锚点,重新执行. http://www.cnblogs.com/mark ...
- 完全用 Linux 工作
GNU/Linux 不是每個人都想用的.如果你只需要處理一般的事務,玩遊戲,那就不需要了解 Linux. UNIX 比 Windows 更適合用於科學研究工作. 大多數科學家和工程師以 UNIX 作為 ...
- python_47_Python2中字符编码与转码
#python3默认是Unicode,Unicode是万国码,不管中文字符还是英文,所有的每个字符都占2个字节空间,16位 #python2默认是ascii码 #ascii码不能存中文,一个英文只能占 ...
- PAT (Basic Level) Practise (中文)- 1005. 继续(3n+1)猜想 (25)
http://www.patest.cn/contests/pat-b-practise/1005 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证 ...
- nginx installl
参考http://jingyan.baidu.com/album/4b07be3cbbb54848b380f322.html?picindex=5 安装nginx需要的依赖包 wget 下载 编译安装 ...
- 【Java】基本数据类型以及其转换
整理了一下Java基本数据类型和面试可能涉及的知识. 字节数(byte) 位数(bit) 取值范围 整型 byte 1 8 -2^7 ~ 2^7 -1 short 2 16 ...
- 问题003:JDK文件夹下的bin有什么作用?javac.exe和java.exe双击后为什么一闪而过,没了?
bin (binary)二进制 ,JDK当中所有的可以执行的二进制应用程序都放在其中.其中都是*.exe文件,表示可以直接执行程序. javac.exe和java.exe双击后为什么一闪而过,没了?因 ...