自定义simple_tag

1.在form表单中,添加{% csrf_token %}会解决通过让render返回页面时报错问题
<input type="hidden" name="csrfmiddlewaretoken" value="lyETYYictPlfgqmUt3GpLuXu1yIyFFfFgH2imWUDgesgCtLZmBkzGB45y7mCFe9d">
2.{% with %}
用更简单的变量名代替更复杂的变量名
3.{% verbatim %}
{{ name }}
{% endverbatim %}
变量夹在verbitim中间不会被浏览器渲染
========================================
================自定义simple_tag========================
1.写模板语时的自定义函数:
创建一个simple_tag的过程:
(1)在app中创建templatetags模块或者文件夹
(2).创建任意.py文件(如my_tag.py)
(3).在使用自定义simple_tag的html文件中引入自己写的.py文件(引入的方式通过load)
即{% load my_tag %}
filter参数最多两个,可以放在if后面作为参数,而simple_tag不能放在if后面作为参数
=====================================================
(以下是templatetags包中的my_tag.py文件)
#_author:来童星
#date:2020/2/27
from django import template
from django.utils.safestring import mark_safe
#register是固定的变量名,不能改变
register=template.Library()

# 1.(1)@register.simple_tag
@register.simple_tag
def my_add100(v1):
    return v1+100# 4+100=104

@register.simple_tag
def my_add(v1,v2,v3):
    return v1+v2+v3
 
#2.(1)@register.filter一个参数
@register.filter
def my_add101(v1):
    return v1+101# 15+101=106
#(2).@register.filter两个参数
@register.filter
def my_add102(v1,v2):
    return v1+102+v2 #15+102+3=120
==========================================
(以下是html文件)
{% load my_tag %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/login/" method="post">
    <input type="text" name="uesr">
    <input type="text" name="pwd">
    <input type="submit" value="summit">
    {% csrf_token %}
</form>
{#1.#}
{#{% verbatim %}#}
{#{{ name }}#}
{#{% endverbatim %}#}
{#2.(1)@register.simple_tag#}
{#{% num|my_add101 %}#}
{#(2)#}
{% my_add 1 2 3 %}
{#3.(1)@register.filter#}
{#{{ num|my_add101 }}#}
{#(2)两个参数#}
{#{{ num|my_add102:3 }}#}
</body>
</html>
原文地址:https://www.cnblogs.com/startl/p/12372373.html