Python编程:Django自定义模板标签

举报
彭世瑜 发表于 2021/08/13 23:21:57 2021/08/13
【摘要】 在APPchart 中新建一个文件夹,和两个文件,结构如下: templatetags/ __init__.py mytags.py 123 mytags.py文件中自定义函数 from django import template register = template.Library() @register.filter def startswith(...

在APPchart 中新建一个文件夹,和两个文件,结构如下:

templatetags/
	__init__.py
	mytags.py

  
 
  • 1
  • 2
  • 3

mytags.py文件中自定义函数

from django import template

register = template.Library()

@register.filter
def startswith(value, start):
	"""
	实现python中的 startswith py2中多一个unicode
	""" if isinstance(value, (str, unicode)): return value.startswith(start) else: return False

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

settings.py中添加注册

'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], # 以下是新加的内容 'libraries': { "mytags": "chart.templatetags.mytags", }, },

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

html文件中使用

{% load mytags %}

{% if field|startswith:"http" %} <td><a href="{{ field }}">{{ field }}</a></td>
 {% else %} <td>{{ field }}</td>
 {% endif %}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

说明:
{% if field|startswith:"http" %}
相当于:
startswith(field, "http")
分别是第一个和第二个参数

注意:使用模板语言的时候|两侧不要有空格!!!

参考

  1. Django之模板语言
  2. Django: is not a registered tag library.
  3. https://stackoverflow.com/questions/40686201/django-1-10-1-my-templatetag-is-not-a-registered-tag-library-must-be-one-of/42881074
  4. https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/85109873

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。