Django Template层之自定义tag
测试环境
Win7
Django 1.11
实践
步骤1
应用根目录下,新建templatetags包目录(注意:该目录名称是约定的),并在该目录下新建自定义py文件(例中为project_dir/website/website_template_tags.py)
代码布局如下:
AutoTestPlatform/
__init__.py
models.py
templatetags/
__init__.py
website_template_tags.py
views.py
website_template_tags.py
# -*- encoding:utf-8 - *-
__author__ = 'shouke'
from django import template
from django.conf import settings
register = template.Library() # 注册tag
@register.simple_tag # 装饰器表名函数是一个标签,tag类型中的一种
@register.tag('user_name')
def get_username(session):
username = session.get('username')
return username
说明:
@register.simple_tag # 表名函数是一个tag,类型为Simple tag
@register.tag('user_name') #注册标签为模块的Library实例,name为模板标签名,该参数如果为空,则默认使用函数名称为模板标签名称
步骤2
html模板中使用自定义tag
{% loadwebsite_template_tags %}
……
<p>user name is {% user_namerequest.session %}</p>
……
参考链接:
https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/