如何解决如何使用搜索词重定向到另一个页面?
我有一个在 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',).filter(similarity__gt=0.15).distinct().order_by('-similarity')
return render(request,locals())
else:
form = SearchForm()
return render(request,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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。