Django搜索空值,验证

问题描述 投票:0回答:2

我正在创建一个搜索应用程序,用户可以在其中通过在搜索字段中写一些内容来查找配料。但是,当有一个空字段,因此没有输入q =时,我希望他将获得需要输入的信息,并将其保留在此网站上。我现在不知道如何正确地编写它,仅在查询=='':时才写,但这不是我所需要的。

这是我的观点:

def drink_list(request):
    template = "drinks/drink_list.html"
    return render(request, template)

def search_results(besos):

    query = besos.GET.get('q')
    if query == "":
        y = "please put input"
        return render(besos, y)

    else:
        q = Q()
        for queries in query.split():
            q |= (Q(ingredients__ingredient_name__icontains=queries))
            #why it look for 'sok z cytryny' and show as well sok z limonki
        results = Recipe.objects.filter(q)
        template = "drinks/search_results.html"
        context = {
        'results' : results,
        }
        return render(besos, template, context)

我的模板:

{% if results %}
  {% for drink in results %}
    <div>
      <p>{{ drink.recipe_name }}</p>
      <p>Preparation: {{ drink.preparation }}</p>
      <p>Ingredients:
        {% for ingredient in drink.ingredients.all %}
          {{ingredient.ingredient_name}}{% if not forloop.last %},{% endif %}
        {% endfor %}
      </p>
    </div>
  {% endfor %}
{% else %}
  <div>Such ingredients do not exist</div>
{% endif %}
django validation search
2个回答
0
投票

最简单的方法是使用Django的Message Framework

 if not query or query == "":
    messages.error(request, "Please put input")
    return redirect("Your Template")

然后在您的模板中:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}

0
投票

我认为您可以使用django forms和字段验证,for example

© www.soinside.com 2019 - 2024. All rights reserved.