Django搜索空值,验证

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

这是我的观点:

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 %}
pkufojq 回答:Django搜索空值,验证

最简单的方法是使用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 %}
,

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

本文链接:https://www.f2er.com/3163829.html

大家都在问