零散知识点(四)
模板函数
模板函数就是可以在前端html页面中执行的函数。
一、第一种,只是执行一个函数
1、创建 templatetags 文件夹
2、在 templatetags文件夹中 创建如eg.py文件。
from django import template register = template.Library() #固定写法 @register.simple_tag def sting_just(num); if num < 100: num = str(num).rjust(3,'0') return num
3、前端html中导入eg.py文件
{% load eg.py %}
4、前端使用方法:
{% string_just xxx %}
则会调用上面代码的函数 string_just(xxx)
二、第二种,可以生成一个html的
这种方法,可以生成一个独立的html代码片段,然后在其他的html页面中调用出来。
1、创建 templatetags 文件夹
2、在 templatetags文件夹中 创建如eg.py文件。
from django import template
register = template.Library() #固定写法
@register.inclusion_tag('inclusion/all_project_list.html') #下面的函数的返回值就传递到此html 中 def all_project_list(request): # 我创建的项目 my_project_list = models.Project.objects.filter(creator=request.tracer.user) # 我参与的项目 join_project_list = models.ProjectUser.objects.filter(user=request.tracer.user) return {'my':my_project_list,'join':join_project_list,'request':request}
all_project_list.html 文件
<li class="dropdown active" > <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> 项目{% if request.tracer.project %}({{request.tracer.project.name}}){% endif %}<span class="caret"></span> </a> <ul class="dropdown-menu"> {% if my %} <li><i class="fa fa-list" aria-hidden="true"></i> 我创建的项目</li> {% for item in my %} <li><a href="{% url 'dashboard' project_id=item.id %}">{{ item.name }}</a></li> {% endfor %} {%endif%} {% if join %} <li role="separator" class="divider"></li> <li><i class="fa fa-handshake-o" aria-hidden="true"></i> 我参与的项目</li> {% for item in join %} <li><a href="{% url 'dashboard' project_id=item.project.id %}">{{ item.project.name }}</a></li> {% endfor %} {%endif%} <li role="separator" class="divider"></li> <li><a href="#">所有项目</a></li> </ul> </li>
上面会将eg.py中的返回值传递到这个html代码片段中,生成一段html格式的代码。
3、要引用这个html代码片段的页面。首先导入:
{% load eg.py %}
4、直接在前端html中调用{% all_project_list request %} 即可。
浙公网安备 33010602011771号