django模板引擎自定义变量
定义临时变量:
{% with i=1 %}
{{i}}
{% endwith %}
定义对临时变量操作的tag
在templatetags中创建set_val.py
内容是
from django import template
import logging
register = template.Library() class SetVarNode(template.Node): def __init__(self, var_name, var_value):
self.var_name = var_name
self.var_value = var_value def render(self, context):
try:
value = template.Variable(self.var_value).resolve(context)
except template.VariableDoesNotExist:
value = ""
context[self.var_name] = value
return u"" class VarAddOneNode(template.Node): def __init__(self, var_name):
self.var_name = var_name def render(self, context):
try:
value = template.Variable(self.var_name).resolve(context)
context[self.var_name] = str( int(value) + 1 )
except template.VariableDoesNotExist:
value = "" return u"" def set_var(parser, token):
"""
{% set <var_name> = <var_value> %}
"""
parts = token.split_contents()
logging.info('len(parts)=' + str(len(parts)))
if len(parts) == 2:
content = parts[1]
if content[len(content)-2 :len(content)] == '++':
var_name = content[:len(content) - 2]
return VarAddOneNode(var_name)
else:
return u""
elif len(parts) == 4:
return SetVarNode(parts[1], parts[3])
# raise template.TemplateSyntaxError("'set' tag must be of the form: {% set <var_name> = <var_value> %}") register.tag('set', set_var)
然后在template中引入
{% load set_val %}
前端代码示例
{% load set_val %}
<div class="layui-form-item">
<div class="layui-form-label">商品尺码</div>
<div class="layui-input-block">
{% with i=1 %}
{% set i = 2 %}
{% for size in size_list %}
<div class="layui-col-md2">
<div class="layui-row">
原名:{{ size.sizeName }}
</div>
名字:
<input style="width: 40px;display:inline;" type="text" name="color" ,
lay-verify="required"
autocomplete="off" placeholder=""
class="layui-input" value={{ size.sizeName }}>
<br>
<input type="checkbox" name="size{{ i }}" lay-skin="primary" checked="checked">
{% set i++ %}
</div>
{% endfor %}
{% endwith %}
</div>
</div>
django模板引擎自定义变量的更多相关文章
- [django]模板中自定义变量&django模板中的变量
django自定义模板变量 context_processors.py def mysetings(request): return { 'NAME': 'maotai' } settings.py ...
- Django模板引擎的研究
Django模板引擎的研究 原创博文,转载请注明出处. 以前曾遇到过错误Reverse for ‘*’ with arguments '()' and keyword arguments' not f ...
- Django(模板语言-自定义filter和simple_tag)
Django(模板语言-自定义filter和simple_tag) filter过滤器的主要形式:变量|函数,意思是将变量交给函数处理,而自定义filter就是自己定义函数,因为用到已有的很少. ...
- Django模板引擎
Django作为Web框架,需要一种很便利的方法动态地生成 HTML 网页,因此有了模板这个概念.模板包含所需 HTML 的部分代码以及一些特殊语法,特殊语法用于描述如何将视图传递的数据动态插入HTM ...
- Python - Django - 模板语言之变量
前言: 在 Django 模板语言中变量用 {{ }},逻辑用 {% %} 在 urls.py 中添加对应关系 from django.conf.urls import url from django ...
- GoFrame 模板引擎对变量转义输出- XSS 漏洞
GoFrame 模板引擎对变量转义输出- XSS 漏洞 环境: gf v1.14.4 go 1.11 官网说明 默认情况下,模板引擎对所有的变量输出并没有使用HTML转码处理,也就是说,如果开发者处理 ...
- 关于Django模板引擎的研究
原创博文,转载请注明出处. 以前曾遇到过错误Reverse for ‘*’ with arguments '()' and keyword arguments' not found.1其原因是没有给视 ...
- Django模板之自定义过滤器/标签/组件
自定义步骤: 1. 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2. 在app应用中创建templatet ...
- django 模板中通过变量替代key取字典内容
模板中通过变量替代key取字典内容 templatetags/├── get_item.py├── __init__.py ###get_item.py # coding=utf-8 from dja ...
随机推荐
- Asp.Net Core微服务初体验
ASP.Net Core的基本配置 .在VS中调试的时候有很多修改Web应用运行端口的方法.但是在开发.调试微服务应用的时候可能需要同时在不同端口上开启多个服务器的实例,因此下面主要看看如何通过命令行 ...
- Spring加载流程源码分析03【refresh】
前面两篇文章分析了super(this)和setConfigLocations(configLocations)的源代码,本文来分析下refresh的源码, Spring加载流程源码分析01[su ...
- mysql命令行导入导出数据库
导出:1.在命令行里,进入mysql安装根目录下的bin目录下比如:D:\Program Files\MySQL\MySQL Server 5.0\bin输入 mysqldump -uroot -p ...
- CSS3制作上下跳动动画箭头效果
动画效果如下: 代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8&q ...
- Java 初始化a=2 打印a+++a++为5
这段程序大概这样: public static void main(String[] args){ int a = 2; System.out.println(a+++a++); } 编译后的字节码为 ...
- 【设计模式】抽象工厂模式 Abstract Factory Pattern
简单工厂模式是一个工厂类根据工厂方法的参数创建不出不同的产品, 工厂方法模式是每一个产品都有一个一一对应的工厂负责创建该产品.那么今天要讲的抽象工厂模式是一个工厂能够产生关联的一系列产品.抽象工厂模式 ...
- 使用AndroidStudio编写APICloud模块需要注意的地方,解决模块未定义。
在新的版本下,使用AndroidStudio编写APICloud模块,已经非常简单了,解决模块未定义,最重要的就是要先看官方的视频! 注意在模块的module.json中name很重要,建议做到三统一 ...
- MATLAB 音响系统工具箱
音响系统工具箱 设计和测试音频处理系统 发行说明 pdf文档 音频系统工具箱™为音频处理系统的设计,仿真和桌面原型设计提供了算法和工具.它支持低延迟信号流式传输到音频接口,交互式参数调整以及数字音频工 ...
- C学习笔记(自增)
自增 (1)后缀:与Turbo C相同,在语句结束之前或者说分号之前才会执行自增. (2)前缀: 前两个自增统一取值,后面的自增即为取值. int i=2,j; j=++i+(++i)+(++i); ...
- 西湖论剑2019复现-Web之首家线上赌场上线啦
首页打开 经过测试发现name和code参数可控,但尝试注入没有发现注入点,于是直接扫描目录找思路 一扫描,果然有问题 目录扫描里面可以看到有一个/.DS_Store的文件,DS_Store是Mac ...