首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在模板代码中设置变量的值?

如何在模板代码中设置变量的值?
EN

Stack Overflow用户
提问于 2018-01-17 06:32:47
回答 2查看 0关注 0票数 0

假设有一个模板

代码语言:javascript
复制
<html>
<div>Hello {{name}}!</div>
</html>

在测试它时,定义变量的值而不触及调用此模板的python代码将是有用的:

代码语言:javascript
复制
{% set name="World" %}     
<html>
<div>Hello {{name}}!</div>
</html>
EN

回答 2

Stack Overflow用户

发布于 2018-01-17 14:48:14

可能想要带着模板标签

代码语言:javascript
复制
{% with "World" as name %}     
<html>
<div>Hello {{name}}!</div>
</html>
{% endwith %}

正确的使用方法:

代码语言:javascript
复制
{% with name="World" greeting="Hello" %}     
<html>
<div>{{ greeting }} {{name}}!</div>
</html>
{% endwith %}
票数 0
EN

Stack Overflow用户

发布于 2018-01-17 15:52:27

另一种不需要将所有内容都放在“WITH”块中的方法是创建一个自定义标记如:

代码语言:javascript
复制
class SetVarNode(template.Node):
    def __init__(self, new_val, var_name):
        self.new_val = new_val
        self.var_name = var_name
    def render(self, context):
        context[self.var_name] = self.new_val
        return ''

import re
@register.tag
def setvar(parser,token):
    # This version uses a regular expression to parse tag contents.
    try:
        # Splitting by None == splitting by spaces.
        tag_name, arg = token.contents.split(None, 1)
    except ValueError:
        raise template.TemplateSyntaxError, "%r tag requires arguments" % token.contents.split()[0]
    m = re.search(r'(.*?) as (\w+)', arg)
    if not m:
        raise template.TemplateSyntaxError, "%r tag had invalid arguments" % tag_name
    new_val, var_name = m.groups()
    if not (new_val[0] == new_val[-1] and new_val[0] in ('"', "'")):
        raise template.TemplateSyntaxError, "%r tag's argument should be in quotes" % tag_name
    return SetVarNode(new_val[1:-1], var_name)

这将允许在模板中编写类似的内容:

代码语言:javascript
复制
{% setvar "a string" as new_template_var %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档