专栏首页全栈全栈django assignment_tag 赋值标签

django assignment_tag 赋值标签

赋值标签(保存模板变量的值)

django.template.Library.assignment_tag()

为了简单化设置上下文中变量的标签的创建,Django 提供一个辅助函数assignment_tag。这个函数方式的工作方式与simple_tag 相同,不同之处在于它将标签的结果存储在指定的上下文变量中而不是直接将其输出。

我们之前的current_time 函数从而可以这样写︰

@register.assignment_tag
def get_current_time(format_string):
    return datetime.datetime.now().strftime(format_string)

然后你可以使用as 参数后面跟随变量的名称将结果存储在模板变量中,并将它输出到你觉得合适的地方︰

{% get_current_time "%Y-%m-%d %I:%M %p" as the_time %}
<p>The time is {{ the_time }}.</p>

如果你的模板标签需要访问当前上下文,你可以在注册标签时使用takes_context 参数:

@register.assignment_tag(takes_context=True)
def get_current_time(context, format_string):
    timezone = context['timezone']
    return your_get_current_time_method(timezone, format_string)

注意函数的第一个参数必须叫做context。

takes_context 选项的工作方式的详细信息,请参阅包含标签

assignment_tag 函数可以接受任意数量的位置参数和关键字参数。例如:

@register.assignment_tag
def my_tag(a, b, *args, **kwargs):
    warning = kwargs['warning']
    profile = kwargs['profile']
    ...
    return ...

然后在模板中,可以将任意数量的由空格分隔的参数传递给模板标签。像在Python 中一样,关键字参数的值的设置使用等号("=") ,并且必须在位置参数之后提供。例子:

{% my_tag 123 "abcd" book.title warning=message|lower profile=user.profile as the_result %}

搬运地址:https://yiyibooks.cn/__trs__/xx/django_182/howto/custom-template-tags.html

标签: DJANGO

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 常用的前端JQ插件

    KEVINGUO_CN
  • bootstrap里的sr-only是什么属性?用途是什么?

    全称是 screen reader only,意为:(仅供)屏幕阅读器,这个 class 主要用于增强 accessbility(可访问性)。

    KEVINGUO_CN
  • 微信小程序使用wxParse解析html

    首先我们在github上下载wxParse https://github.com/icindy/wxParse 下载完之后我们需要用到目录下的wxParse文件...

    KEVINGUO_CN
  • Git标签管理

    我们可以针对某一次的提交打上一个标签,有点类似于给某次提交取个别名,比如1.0版本发布时打个标签叫v1.0,2.0版本发布时打个标签叫v2.0,因为每次版本提交...

    江南一点雨
  • 今天是星期天,好happy

    今天星期天,没有新课程,休息一下。 其实也没有休息到,跑去给某学妹开了小灶,一对一辅导android开发,各位同学不要羡慕哦。 说几个大家反馈到的问题: 1.你...

    Crossin先生
  • Node.js服务端开发教程 (六):依赖注入补漏篇

    最近在写前面两篇关于依赖注入的文章时,我总是在想用一句怎么的话来简单而朴素的描述依赖注入的概念,让从来没接触过的朋友能比较形象的去理解。想来想去,觉得可以站在依...

    一斤代码
  • Mac 刪除鍵(delete)這三招你會嗎?大幅加快打字速度 原

    Option + delete(Control + delete),一次刪除一個單詞

    wuweixiang
  • 热门数据分析面试题。

    Sql中有一类函数叫聚合函数,比如count、sum、avg、min、max等,这些函数的可以将多行数据按照规整聚集为一行,一般聚集前的数据行要大于聚集后的数据...

    张俊红
  • 3道TMD热门数据分析面试题,我们帮你解了

    导读:本文通过几道TMD面试题介绍一下如何使用窗口函数。涉及知识点有用于排序的窗口函数、用于用户分组查询的窗口函数、用于偏移分析的窗口函数,每种会通过一道面试题...

    华章科技
  • 全球顶级赛车头盔品牌推出VR专用头盔ST5VR Racing

    意大利赛车头盔专业品牌Stilo近日推出了一款名为ST5VR Racing的专业级别头盔。该头盔是为Oculus Rift而设计的,在前后平衡上参照专业赛事级别...

    VRPinea

扫码关注云+社区

领取腾讯云代金券