ajax请求返回后Django反向和重定向Django.url.exceptions.NoReverseMatch公司

2024-10-04 09:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我调用一个特定的urlfrom和ajax函数,该函数将调用相应的视图函数。在view函数中,我想通过调用另一个视图来重定向页面(因为ajax请求后我无法呈现)。在

以下是我的网址:

urlpatterns = [
    url(r'^$', views.search, name='search'),
    url(r'^search_result/.+$', views.search_result, name='search_result'),
    url(r'^new_search_result/$',
        views.new_search_result,
        kwargs={'selected': '', 'keyword': ''},
        name='new_search_result')
]

这是search_result视图:

^{pr2}$

这是new_search_result视图:

def new_search_result(request, selected={}, keyword=''):
   # code blocks

但在执政官那里我得到了一个错误:

django.urls.exceptions.NoReverseMatch: Reverse for 'new_search_result' with keyword arguments '{'selected': '{"PANTHER":"ftp.pantherdb.org","Pasteur Insitute":"ftp.pasteur.fr","Rat Genome Database":"ftp.rgd.mcw.edu"}', 'keyword': 'dfasdf'}' not found. 1 pattern(s) tried: ['searchengine/new_search_result/$']
[22/Jul/2017 12:52:12] "POST /searchengine/search_result/dfasdf HTTP/1.1" 500 16814

Tags: 函数name视图urlnewsearchftpajax
1条回答
网友
1楼 · 发布于 2024-10-04 09:32:19

urlkwargs参数

为调用url提供的额外的kwargs参数允许您定义随后传递给视图的额外参数。它们不定义获取url时提供的额外参数-reverse的调用不知道这些额外参数,reverse的调用只知道url模式中定义的参数。在

如果你有:

urlpatterns = [
    url(r'^blog/(?P<year>[0-9]{4})/$', myview,
        kwargs={'foo': 'bar'}),
]

这意味着,当您的url以blog/1111的形式被获取时,视图myview将被两个参数调用:值为1111year和值为bar的{}。在

{11}它不仅仅是在视图中提供的。reverse函数的kwargs参数实际上是指在url模式中定义的参数。在

向视图传递参数

因此,看看您要实现的目标:您希望将用户的浏览器重定向到另一个URL,这样得到的视图将能够访问keyword和{}参数。在

如果您希望对用户隐藏该数据,则必须将其存储在会话中。假设不是这样,您有三种方法将参数传递到视图:通过GET参数、通过POST数据和查看url。在您重定向到另一个页面时,不能使用POST请求。您可以使用url,但对于搜索页面,我认为最好的选择是使用GET参数。在

因此,在search_result视图中,可以向URL添加一个查询字符串,即?keyword=...&selected=...。例如:

^{pr2}$

您的new_search_result视图将从请求中读取这些内容:

def new_search_result(request):
    selected = request.GET.get('selected')
    keyword = request.GET.get('keyword')
    # ...

相关问题 更多 >