在django的template中自定义标签(tag)

前两天用social-auth做了一个第三方登录,settings里自定义了一个变量控制是否允许解绑,需要在一个自定义的template里读取到这个设置变量

django允许自定义tag和filter,由于我要做判断,所以只能用filter,tag是不支持if的

首先要在项目所在的app下创建一个templatetags包(名字不能错),注意不是创建目录是包,我用的开发工具是Pycharm,新建时创建Python package。创建成功后会有一个__init__.py,然后在这个包里创建一个py文件,比如my_tag.py

from djangoimport template

from django.confimport settings

register= template.Library()

@register.filter

def settings_value(name):

    return getattr(settings, name, "")

然后在template里导入并使用

{% load my_tag %}

{% if 'ALLOW_DISCONNECT'|settings_value %}

    ......

{%endif%}

创建templatetags的app一定要是在settings里INSTALLED_APPS里注册的,否则Django会找不到这个自定义包

你可能感兴趣的:(在django的template中自定义标签(tag))