Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何重定向到另一个带有搜索词的页面?_Django_Search_Django Views_Django Queryset_Django Urls - Fatal编程技术网

Django 如何重定向到另一个带有搜索词的页面?

Django 如何重定向到另一个带有搜索词的页面?,django,search,django-views,django-queryset,django-urls,Django,Search,Django Views,Django Queryset,Django Urls,我有一个搜索引擎,在主页/视图中运行得非常好。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 = product

我有一个搜索引擎,在主页/视图中运行得非常好。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())
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)
我还有inurl.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())
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)
app_name='home'
URL模式=[
路径(“”,views.home,name='home'),
路径('search_results/',views.search_results,name='search_results'),
]\
+静态(settings.static\u URL,document\u root=settings.static\u root)\
+静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)
如何重定向到具有如下url结构的页面localhost/search\u results/?query=['query']

尝试以下方法:

return redirect_params(reverse('home:search_results'), {'query': 'query'})

这个问题解决了!我尝试应用这样的结构返回重定向(f'/search\u results/?query={query}')

我不知道这是否是最正确的解决方案,但我得到了我想要的响应localhost/search\u results/?query=umbrary

我希望这对某人有所帮助,如果有人提出更好的解决方案,请写下来。提前谢谢大家

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)

未定义名称“重定向参数”。。。django库中没有像redirect_params这样的方法