django的with标签

  1. 使用方法:
{% with comments.count as total_comments %}
	<h2>
	{{ total_comments }}
	</h2>    
{% endwith %}

{% with %}标签可将某个值赋予可用的新变量中,直至遇到{% endwith %}标签。


但是,不能在with标签中再使用自定义模板标签
如下:

# 其中get_most_commented_posts是自定义的模板标签
{% with get_most_commented_posts as most_commented_posts %}
    <ul>
        {% for post in most_commented_posts %}
        <li>
        <a href="{{ post.get_absolute_url }}">{{ post.title }}</a>
        </li>
        {% endfor %}
    </ul>
{% endwith %}
# 结果发现 无法遍历数据

正确的用法时:
# 使用as参数
{% get_most_commented_posts as most_commented_posts %}
    <ul>
        {% for post in most_commented_posts %}
        <li>
        <a href="{{ post.get_absolute_url }}">{{ post.title }}</a>
        </li>
        {% endfor %}
    </ul>

下面介绍一下with参数:
{% include 'pagination.html' with page=posts %}

作用是将posts赋值给page变量,并将page变量传递给模板pagination.html

总结:标签中不能嵌套其他标签,可使用相关参数,如as参数,with参数等
注:使用{% with %}模板标签对于防止多次计算QuerySet十分有用。

Django允许开发者自定义标签库,以便在模板中使用自定义的标签和过滤器。下面是一些步骤,用于创建和使用自定义标签库: 1. 首先,在你的Django项目中创建一个名为`templatetags`的目录。这个目录应该位于你的应用程序的根目录下。 2. 在`templatetags`目录中创建一个Python模块文件(例如`my_tags.py`),这个文件将包含你的自定义标签和过滤器。 3. 在`my_tags.py`文件中,导入`django.template.Library`类,并创建一个`register`实例,用于注册你的自定义标签和过滤器。 4. 在`register`实例上使用`simple_tag`装饰器来定义一个简单的标签。你可以在装饰器中指定标签的名称。 ```python from django import template register = template.Library() @register.simple_tag def my_custom_tag(): # 标签的逻辑代码 return "Hello, world!" ``` 5. 如果你想定义一个接收参数的标签,可以使用`assignment_tag`装饰器。这样你可以在模板中使用标签并将结果赋值给一个变量。 ```python @register.assignment_tag def my_custom_tag_with_params(param1, param2): # 标签的逻辑代码 return param1 + param2 ``` 6. 如果你要定义一个过滤器,可以使用`filter`装饰器。 ```python @register.filter def my_custom_filter(value): # 过滤器的逻辑代码 return modified_value ``` 7. 在你的模板中,首先加载自定义标签库,然后就可以使用你定义的标签和过滤器了。 ```django {% load my_tags %} {% my_custom_tag %} {% my_custom_tag_with_params 1 2 as result %} {{ result }} {{ some_value|my_custom_filter }} ``` 这就是使用Django自定义标签库的基本步骤。你可以在`my_tags.py`文件中定义更多的标签和过滤器,以满足你的项目需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值