在django的template中自定义标签(tag)
2019-01-07 本文已影响0人
毅巍奇诚
前两天用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会找不到这个自定义包