亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

django template實(shí)現(xiàn)定義臨時(shí)變量,自定義賦值、自增實(shí)例

瀏覽:153日期:2024-09-26 17:05:43

定義臨時(shí)變量:

{% with i=1 %}{{i}}{% endwith %}

定義對(duì)臨時(shí)變量操作的tag

在templatetags中創(chuàng)建set_val.py

內(nèi)容是

from django import templateimport loggingregister = 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 type='text' name='color' ,lay-verify='required'autocomplete='off' placeholder='' value={{ size.sizeName }}> <br> <input type='checkbox' name='size{{ i }}' lay-skin='primary' checked='checked'> {% set i++ %} </div>{% endfor %} {% endwith %} </div> </div>

補(bǔ)充知識(shí):django模板中做一些加減乘除基本運(yùn)算

Django模版加法:

{{ value|add:10}} value=5,則返回15

Django模版減法:

{{value|add:-10}} value=5,則返回-5,這個(gè)比較好理解,減法就是加一個(gè)負(fù)數(shù)

Django模版乘法:

{% widthratio 5 1 100 %} 上面的代碼表示:5/1 *100,返回500,widthratio需要三個(gè)參數(shù),它會(huì)使用 參數(shù)1/參數(shù)2*參數(shù)3,所以要進(jìn)行乘法的話,就將參數(shù)2=1即可

Django做除法,這里用到widthratio這個(gè)方法

<td>{% widthratio foo.product_amount 100 1 %}</td>#}

如果想將widthratio函數(shù)處理后的值當(dāng)做變量,可以如下方法

{% widthratio this_value max_value max_width as width %}

{% blocktrans %}The width is: {{ width }}{% endblocktrans %}

數(shù)據(jù)保留兩位小數(shù)

<td>{{ foo.product_amount |floatformat:5 }}</td>

register = template.Library()

一些復(fù)雜一些的運(yùn)算

利用 add 這個(gè)filter ,可以做更瘋狂的事:

計(jì)算 A^2: {% widthratio A 1 A %}

計(jì)算 (A+B)^2: {% widthratio A|add:B 1 A|add:B %}

計(jì)算 (A+B) * (C+D): {% widthratio A|add:B 1 C|add:D %}

除法并保留小數(shù)

首先定義方法在templatehelper.py文件中

@register.filterdef div(value, div): ’’’ 分轉(zhuǎn)化為元,保留兩位小數(shù) :param value: :param div: :return: ’’’ return round((value / div), 2)

然后在模板中可以按照如下使用,當(dāng)然前提是{% load templatehelper %}:

<td>{{ foo.product_amount |div:100 }}</td>

嘗試過(guò)一個(gè)笨辦法,但是不生效,而且就算生效,也會(huì)出現(xiàn)忽略掉小數(shù)點(diǎn)后面得值的情況,所以不建議:

<td>{% widthratio foo.product_amount 100 1 as width %}{% blocktrans %}{{ width }}{% endblocktrans %}</td>#}

以上這篇django template實(shí)現(xiàn)定義臨時(shí)變量,自定義賦值、自增實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
主站蜘蛛池模板: 国产成人高清精品免费软件 | 国产精品免费看久久久久 | 久久香蕉精品视频 | 谁有免费黄色网址 | 亚洲国产精品成人综合色在线婷婷 | 一级特黄毛片 | 日韩三级小视频 | 亚洲视频二区 | 亚洲精品一区二区乱码在线观看 | 黄色片免费网站 | 日本在线日本中文字幕日本在线视频播放 | 95视频在线播放 | 国产精品丝袜 | 亚洲 欧美 清纯 校园 另类 | 欧美日一区| 欧美日韩国产高清视频 | 亚洲无线观看 | 在线观看黄网视频免费播放 | 国产四区 | 成人精品第一区二区三区 | 国产精品你懂的在线播放 | 综合欧美日韩一区二区三区 | 黄色成人在线观看 | 一级黄色激情片 | 国产在线精品一区免费香蕉 | 在线免费观看一区二区三区 | 在线免费国产视频 | 久视频在线| 日本国产一区 | 久久精品第一页 | 亚洲视频一区在线播放 | 国产精品13页 | 黄色片视频网站 | 日韩中文字幕在线观看视频 | 日本一区二区三区精品视频 | 我我色综合 | 小泽玛利亚一区二区在线看 | 国产大尺度吃奶无遮无挡网 | 成人黄18免费视频 | 国产大陆精品另类xxxx | 免费观看国产精品视频 |