zoukankan      html  css  js  c++  java
  • 自定义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>
  • 相关阅读:
    冒泡排序和选择排序的根本差别在哪里?
    选择排序的3种语言实现方法(C java python)
    OVS中arp响应的流表的实现
    python 输出语句的写法
    haproxy + keepalived 实现网站高可靠
    nginx + keepalived 实现高可靠web网站
    实践:配置keepalived实现主备热备份功能
    Another app is currently holding the yum lock; waiting for it to exit 解决方法
    举例:使用XML库的方式,实现RPC通信
    openvswitch 2.7 安装过程记录 总结
  • 原文地址:https://www.cnblogs.com/startl/p/12372373.html
Copyright © 2011-2022 走看看