如何使用搜索词重定向到另一个页面?
How to redirect to another page with a search term?
我有一个在 home/views.py:
中运行良好的搜索引擎
def home(request):
...
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
results = products.annotate(
similarity=TrigramSimilarity('name', query),
).filter(similarity__gt=0.15).distinct().order_by('-similarity')
# return render(request, 'search/search_results.html', locals())
return redirect(reverse('home:search_results'))
else:
form = SearchForm()
...
return render(request, 'home/home.html', context)
def search_results(request):
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
results = products.annotate(
similarity=TrigramSimilarity('name', query),
).filter(similarity__gt=0.15).distinct().order_by('-similarity')
return render(request, 'search/search_results.html', locals())
else:
form = SearchForm()
return render(request, 'search/search_results.html', locals())
我也在urls.py:
app_name = 'home'
urlpatterns = [
path('', views.home, name='home'),
path('search_results/<query>', views.search_results, name='search_results'),
]\
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) \
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
如何重定向到具有 url 结构的页面 localhost/search_results/?query=['query']?
试试这个:
return redirect_params(reverse('home:search_results'), {'query': 'query'})
这个问题已经解决了!我试图应用这样的结构 return redirect(f'/search_results/?query={query}').
我不知道这是否是最正确的解决方案,但我得到了我想要的响应 localhost/search_results/?query=umbrella
我希望这对某人有所帮助,如果有人提出更好的解决方案,请写下来。提前谢谢大家!
def home(request):
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
results = products.annotate(
similarity=TrigramSimilarity('name', query),
).filter(similarity__gt=0.15).distinct().order_by('-similarity')
return redirect(f'/search_results/?query={query}')
else:
form = SearchForm()
return render(request, 'home/home.html', context)
我有一个在 home/views.py:
中运行良好的搜索引擎def home(request):
...
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
results = products.annotate(
similarity=TrigramSimilarity('name', query),
).filter(similarity__gt=0.15).distinct().order_by('-similarity')
# return render(request, 'search/search_results.html', locals())
return redirect(reverse('home:search_results'))
else:
form = SearchForm()
...
return render(request, 'home/home.html', context)
def search_results(request):
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
results = products.annotate(
similarity=TrigramSimilarity('name', query),
).filter(similarity__gt=0.15).distinct().order_by('-similarity')
return render(request, 'search/search_results.html', locals())
else:
form = SearchForm()
return render(request, 'search/search_results.html', locals())
我也在urls.py:
app_name = 'home'
urlpatterns = [
path('', views.home, name='home'),
path('search_results/<query>', views.search_results, name='search_results'),
]\
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) \
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
如何重定向到具有 url 结构的页面 localhost/search_results/?query=['query']?
试试这个:
return redirect_params(reverse('home:search_results'), {'query': 'query'})
这个问题已经解决了!我试图应用这样的结构 return redirect(f'/search_results/?query={query}').
我不知道这是否是最正确的解决方案,但我得到了我想要的响应 localhost/search_results/?query=umbrella
我希望这对某人有所帮助,如果有人提出更好的解决方案,请写下来。提前谢谢大家!
def home(request):
form = SearchForm()
query = None
results = []
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
results = products.annotate(
similarity=TrigramSimilarity('name', query),
).filter(similarity__gt=0.15).distinct().order_by('-similarity')
return redirect(f'/search_results/?query={query}')
else:
form = SearchForm()
return render(request, 'home/home.html', context)