零散知识点(四)

模板函数

模板函数就是可以在前端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 %} 即可。

 

posted on 2020-10-28 11:23  大能猫不是猫  阅读(123)  评论(0)    收藏  举报