我正在创建一个搜索应用程序,用户可以在其中通过在搜索字段中写一些内容来查找配料。但是,当有一个空字段,因此没有输入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的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