【问题标题】:If and else statements in Django templateDjango 模板中的 if 和 else 语句
【发布时间】:2020-09-28 09:27:04
【问题描述】:

我正在做一个百科全书项目,主页上有一个搜索字段,用户可以在其中输入条目的标题来执行搜索。如果完全匹配,则将加载入口页面。如果有部分匹配,那么它将导致一个搜索页面,该页面将列出一些具有相似标题的条目建议。如果没有匹配或搜索是在没有查询的情况下执行的,我希望搜索页面显示一条消息,告诉用户没有找到条目。我有前 2 个条件,它们工作正常,但我正在努力让页面显示未找到条目的错误。

views.py

def search(request):
value = request.GET.get('q','')
if(util.get_entry(value) is not None):
    return HttpResponseRedirect(reverse("entry", kwargs={'entry': value }))

else:
    subStringEntries = []
    for entry in util.list_entries():
        if value.upper() in entry.upper():
            subStringEntries.append(entry)
           
    return render(request, "encyclopedia/search.html", {
            "entries": subStringEntries,
            "search": True,
            "value": value
})

搜索.html

{% extends "encyclopedia/layout.html" %}

{% block title %}
Encyclopedia
{% endblock %}

{% block body %}
{% if search %}
<h1>Searching for "{{ value }}"</h1>
<h2>Did you mean...</h2>
<ul>
    {% for entry in entries %}
    <li><a href="{% url 'entry' entry %}">{{ entry }}</a></li>
    {% endfor %}
</ul>


{% else %}
No search results for this query
{% endif %}
{% endblock %}

【问题讨论】:

    标签: python django if-statement django-templates


    【解决方案1】:

    你可以使用{% empty %}

    {% for entry in entries %}
    <li><a href="{% url 'entry' entry %}">{{ entry }}</a></li>
    {% empty %}
    No entries found
    {% endfor %}
    

    【讨论】:

    • 第 18 行的块标记无效:'empty',预期为 'elif'、'else' 或 'endif'。您是否忘记注册或加载此标签?
    • 你使用的是什么版本的 Django?这至少是当前版本的正确答案。 docs.djangoproject.com/en/3.0/ref/templates/builtins/#for-empty
    • 忘记版本 - 这在 1.x 版本中就已经存在了。如果它不工作,你有更大的问题 - 它是一个内置标签!
    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多