[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 ...
随机推荐
- 企业常用的站内收索、QQ群、在线客服
<div class="toplinks"> <form target="_blank"> ...
- win8.1和wp8.1共用代码,需要注意的一些问题
最近写了一个应有,使用了mvvmlight,把viewmodel.model.common之类的代码都放到了shared共享,写下来才发现,有不少问题是自已下手之前没注意到的,有些地方实在没法中途改了 ...
- 【BZOJ4810】[YNOI2017] 由乃的玉米田(莫队+bitset)
点此看题面 大致题意: 给你一段序列,每次询问一段区间内是否存在两个数的差或和或积为\(x\). 莫队算法 看到区间询问+可以离线,首先想到了莫队啊. 但是,在较短的时间内更新信息依然比较难以实现. ...
- NOIP2018赛前停课集训记——最后的刷板子计划
前言 再过两天就\(NOIP2018\)了. 于是,我决定不做其他题目,开始一心一意刷板子了. 这篇博客记录的就是我的刷板子计划. [洛谷3383][模板]线性筛素数 这种普及-的题目我还写挂了两次( ...
- 2017.12.24 Java序列化你不知道的事(二)
1 序列化允许重构 序列化允许一定数量的类变种,甚至重构之后也是如此,ObjectInputStream 仍可以很好地将其读出来. Java Object Serialization 规范可以自动管理 ...
- 【luogu P1637 三元上升子序列】 题解
题目链接:https://www.luogu.org/problemnew/show/P1637 BIT + 离散化. 读题得数据规模需离散化.BIT开不到longint这么大的数组. 对于题目所求的 ...
- C# 理解FileInfo类的Open()方法
我们在对文件进行读写操作之前必须打开文件,FileInfo类为我们提供了一个Open()方法,该方法包含了两个枚举类型值的参数,一个为FileMode枚举类型值,另一个为FileAccess枚举类型值 ...
- java基础面试题:java中实现多态的机制是什么?
靠的是父类或接口的引用指向子类或实现类的对象, 调用的方法是内存中正在运行的那个对象的方法.
- JS MarcoTasks MicroTasks
JS MarcoTasks MicroTasks 在JS的event loop中,有两种任务队列microtasks和macrotasks microtasks process.nextTick Pr ...
- 【C++学习笔记】强大的算法——spfa
spfa的定义 PFA算法的全称是:Shortest Path Faster Algorithm,用于求单源最短路,由西南交通大学段凡丁于1994年发表.当给定的图存在负边时,Dijkstra算法就无 ...