Django模板引擎中变量作为属性值调用

作者:matrix 被围观: 3,271 次 发布时间:2019-05-16 分类:Python 零零星星 | 4 条评论 »

这是一个创建于 2039 天前的主题,其中的信息可能已经有所发展或是发生改变。

Django默认模板中如果想要调用变量的属性值只能点.字符,也就是value.arg,等同于value["arg"]的调用,不能使用方括号的语法操作,这样的就会导致无法取value[arg]这种变量属性值。

解决办法

1.更换模版引擎。
2.使用自定义template filters模版过滤器

使用模版过滤器setup

1.创建templatetags目录

在项目的模块目录下创建templatetags文件夹(和路由配置urls.py同级)
目录下需要创建__init__.py空白文件

2.创建过滤器py文件

自定义过滤器:dict_value
val.py

from django import template
register = template.Library()

@register.filter(name='dict_value')
def dict_value(value, arg):
    """
    模版变量过滤器 用于调用变量属性的值
    如:$value[$arg]
    :param value:
    :param arg:
    :return:
    """
    return value[arg]

3.模版中使用

模版中需要load操作:

{% load val %} #载入过滤器文件val.py
{{ params_data|dict_value:item|dict_value:'title' }}#使用过滤器

如上调用形式等同于:
params_data[item]['title']

参考:
https://www.v2ex.com/t/66772
https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
https://blog.csdn.net/lagelangzhi/article/details/54620061

PEACE~

其他文章:
本文固定链接:https://www.hhtjim.com/django-template-engine-variables-as-attribute-values-in-calls.html
matrix
本文章由 matrix 于2019年05月16日发布在Python, 零零星星分类下,目前没有通告,你可以至底部留下评论。
转载请注明:Django模板引擎中变量作为属性值调用-HHTjim'S 部落格
关键字:,

有4 条评论 »

  1. 谷歌seo 谷歌seo 2022-6-17 11:56:38 +0800#3

    小白表示看不懂,但是还是要学习学习

  2. 云点SEO 云点SEO 2021-7-29 13:26:11 +0800#2

    学无止境

  3. 奶爸de笔记 奶爸de笔记 2019-5-17 0:20:53 +0800#1

    py文件看不懂

    • matrix matrix 2019-5-17 13:50:52 +0800

      😂 😂 我也才入门,数据处理方面 python真的很方便 。主要是有很多现成的库 😆 😆 😆

添加新评论 »

 🙈 😱 😂 😛 😭 😳 😀 😆 👿 😉 😯 😮 😕 😎 😐 😥 😡 😈 💡

插入图片

NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!