带标记的Django bug

时间:2009-12-16 00:34:16

标签: django tags

我的代码

{% if GET['search'] % }
            {% block count codes|length as counter %}

以下是一个有效的if -clause作为Django标签吗?

{% if GET['search'] % }

以下代码给出了一个错误, block 只接受一个参数。 代码有什么问题?

{% block count codes|length as counter %}

4 个答案:

答案 0 :(得分:5)

Django不是PHP。

您正尝试在模板标记内使用模板过滤器。您可以使用标签或过滤器,但不能同时使用两者。

就此而言,由于block标记仅占用块的标签,我不确定您编写的模板代码应该做什么。此外,您确定GET['search']是模板代码中的有效语法吗?

我对你的观点和模板要求有点猜测,但这就是我在你的位置接近这个问题的方法。根据您的具体情况,您需要为自己填写许多空白。

views.py

from django.shortcuts import render_to_response

def my_view(request):
    request_was_search = False
    codes = []

    if request.GET.has_key('search'):
        request_was_search = True
        codes = some_function_you_define_to_get_codes()

    return render_to_response('foo.html',
                              {'codes':codes,
                               'request_was_search':request_was_search})

在模板中:

{% block count %}
    {% if request_was_search %}
        // do whatever you want here
        <p>There were {{ codes|length }} codes submitted.</p>
        // end example
    {% endif %}
{% endblock %}

答案 1 :(得分:3)

这是不正确的语法。试试这个:

{% if GET.search % }

这假设您在传递给模板的上下文中有GET。

答案 2 :(得分:1)

首先定义块,然后在

中添加代码
{% block header %}
 <h1>My Site</h1>
{% endblock header %}

答案 3 :(得分:0)

看看你的代码的第一行: {% if GET['search'] % } 最后两个字符 % 和 } 之间的额外空格是问题所在。删除空格,使 %} 靠在一起。错误('block' 标签只接受一个参数)就会消失。