【发布时间】:2020-03-08 13:53:56
【问题描述】:
我正在使用 django 创建一个应用程序,用户可以在其中搜索某些事物的定义。所以他正在输入一个词“安全”来得到这个定义。他得到了结果,然后他按下了返回按钮。然后他得到一个网站,但搜索字段仍然存储旧数据/输入“安全”。我该如何解决这个问题?
模板:
<div>
<h1><a href="/">Drink drank drunk</a></h1>
</div>
<h1>Jakie masz skladniki?</h1>
<form action="{% url 'search_results' %}" method="get">
<input name="q" type="text" placeholder="Search...">
</form>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
观看次数:
from django.shortcuts import render
from django.db.models import Q #new
from .models import Recipe
from .models import Ingredient
from django.contrib import messages
from django.shortcuts import redirect
def drink_list(request):
template = "drinks/drink_list.html"
return render(request, template)
def search_results(besos):
query = besos.GET.get('q')
if not query or query == ' ' or query == ' ' or query == ' ':
#how to write this ^ in shortest way? if string is empty then return 'drink_list'
messages.error(besos, "Search field can not be empty")
return redirect('drink_list')
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)
网址:
urlpatterns = [
path('', views.drink_list, name='drink_list'),
path('search/', views.search_results, name='search_results'),
path('no_name/', views.drink_list, name='drink_list'),
]
【问题讨论】:
-
你能发布你到目前为止的代码吗?一种方法是研究使用
request.session。 -
我已经在上面更新了 :)
-
这有帮助吗?
<input name="q" type="text" placeholder="Search..." value=""> -
嗨@LuiTe,有 Django 文档。 Django 中有一个 flush() 来清除当前会话。详细解释请见:docs.djangoproject.com/en/2.2/topics/http/sessions/…
-
我自己没有测试。让我知道它是否有效!
标签: django google-chrome button back