pythonのsimple_tag
Posted 。低调ヽ继续
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 %}中,这个是后者不可以替代的。
以上是关于pythonのsimple_tag的主要内容,如果未能解决你的问题,请参考以下文章