zoukankan      html  css  js  c++  java
  • pythonのsimple_tag

    当我们需要在页面种直接调用py文件中的某些方法时,我们就要用到simple_tag。具体步骤如下:

    1.在某个app下创建templatetags文件夹,切记该名称是不可以改变的。

    2.在该文件夹下创建任意的.py文件,如test.py,test.py内容如下:

     1 from django import template
     2 
     3 from django.utils.safestring import mark_safe
     4 # register名称不可以改变
     5 register = template.Library()
     6 
     7 @register.simple_tag
     8 
     9 def myCheck(param1,param2):
    10     return param1 + param2

    3.在setting中注册该app,如果是系统生成时就添加的,则不需要进行app注册

    1 INSTALLED_APPS = [
    2     'django.contrib.admin',
    3     'django.contrib.auth',
    4     'django.contrib.contenttypes',
    5     'django.contrib.sessions',
    6     'django.contrib.messages',
    7     'django.contrib.staticfiles',
    8     'app01.apps.App01Config', # 我这里是创建系统时,就直接创建了相关的app01
    9 ]

    4.在页面中引入(1)顶部引入{%load  test%}  test是我们在templatetags文件夹下创建的.py文件。(2)重点看第10行代码 {% 函数名 arg1 arg2 %}对应的是.py文件中相应函数及其所需要传入的相关参数。并且参数中间是可以添加空格的。

     1 {% load  test%}
     2 <!DOCTYPE html>
     3 <html lang="en">
     4 <head>
     5     <meta charset="UTF-8">
     6     <title>Title</title>
     7 </head>
     8 <body>
     9      <h1>{{ name }}</h1>
    10      <h1>{% myCheck  3 2  %}</h1>
    11 </body>
    12 </html>

     

    1 @register.filter
    2 def myCheck1(param1,param2):
    3     return param1 + param2
     <h1>{{ "name:"|myCheck1:"Jerry" }}</h1>

    filter和simple_tag优缺点:

    1.前者参数最多能有两个,并且参数前边不能有空格,如果前者需要添加多个参数只能<h1>{{ "参数1:"|myCheck1:"参数2" }}</h1>,然后在后台split进行分割。而后者可以有多个参数,并且参数之间可以有空格

    2.前者还可以写在页面中的{%if  "参数1:"|myCheck1:"参数2" %}{%endif %}中,这个是后者不可以替代的。

  • 相关阅读:
    linux下vim配置以及一些常用的快捷键
    linux下java环境配置
    编译原理实习(应用预测分析法LL(1)实现语法分析)
    hdu 1063(java写高精度)
    loj 1271
    loj 1379(最短路变形)
    hdu 4114(状压dp)
    loj 1002(spfa变形)
    python生产者消费者模型
    python创建一个线程和一个线程池
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/9842609.html
Copyright © 2011-2022 走看看