Python网站开发必备-django模板自定义标签

大家好,我是辣条哥

前面几天都没有上啥干的,应广大粉丝要求,今天来点干的不能再干的,而且应该也是现在很多人都比较缺乏的一块,所以看完一定要记得收藏,免得之后还找不到了
Python网站开发必备-django模板自定义标签_第1张图片
另外再补充一小点,最近不少人在问我那30个游戏源码跟一些案例源码,还有之前的学习路线图,免得你们找不到我放在下面了

这里,这里,这里,点击我

目录

  • 模板层之自定义标签
    • 作用
    • 第一步
    • 第二步
    • 第三步
    • 第四步
      • 对应模板层
      • 自定义过滤器

模板层之自定义标签

作用

-干什么用的?生成html的片段(动态,传参数,传数据)

-app下新建一个模块,templatetags
		-创建一个py文件(mytag.py)
		-from django.template import Library
		-register=Library()   ----->register名字一定不能变
		-写装饰器(标签,过滤器,inclusion_tag)
		-@inclusion_tag('模板路径',name='重命名')
		-def my_in():  不写,写多个,不写不传,写多个,按空格来传参
		-	一堆逻辑处理,查数据库
		-	ret=Book.object.all()
			return {''books':ret}
		-在模板中:
			可以用books这个变量,渲染页面
		-应用:
			-在另一个模板中:
			-{%load mytag.py%}
			-{% my_in %}

第一步

先app01是不是已经在setting中注册

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
]

第二步

在app01下创建一个templatetags(名字不能变)的文件夹(模块)

第三步

在模块下创建一个py文件,名字随意:mytag.pyPython网站开发必备-django模板自定义标签_第2张图片

第四步

mytag.py中的内容:

# 第一种导入方式
# 第一步,导入template
# from django import template
# 第二步,定义一个叫register的变量=template.Library()
# register = template.Library()

# 或者
from django.template import Library

register = Library()

# 第三步的第一种
@register.filter()
def sadd(str1):
    # 业务逻辑很复杂哦
    return str1 + 1

# 第三步的第一种
@register.filter(name = 'myadd')
def sadd(str1):
    # 业务逻辑很复杂哦
    return str1 + 1

对应模板层

第四步第一种模板直接调用函数sadd函数

{% load mytag %}
{{ 3|sadd }}

第四步第二种在模板中使用 myadd 是解析

{% load mytag %}
{{ 4|myadd }}

自定义过滤器

-1-4:4,根过滤器的定义完全一样
			-5 只是装饰器不一样
			@register.simple_tag()
				def add_nb(value):
					return value+'nb'
			-6 在模板里:(多个参数,以空格区分)
				-{% load mytag %}
				-{% add_nb 'lqz'%}

小提示:不能用if判断

点击下面名片直接找博主我拿

你可能感兴趣的:(Python知识点系列详解,Python,web开发,python,后端,django,开发语言,程序人生)