DJANGO参数即使在与参数重定向上也无法获得



我有以下视图,即如果没有重定向,我只想留在当前视图中。

def surveys_view(request, survey=None):
    if survey != 'survey1':
            return redirect('matching:surveys', survey='survey1')

我的urls.py看起来像这样:

url(r'^surveys', views.surveys_view, name='surveys'),
url(r'^surveys/(?P<survey>survey1|survey2)', views.surveys_view, name='surveys'),

问题在于,调查变量是每次引起无限重定向的None。我认为在重定向后,survey值将设置为" survey1"。

如何将调查参数设置为" survey1"而不是None

django urls列表中的列表是从0位置解析的,因此在您的URL中,

url(r'^surveys', views.surveys_view, name='surveys')

具有优先级,因为正则表达式像任何以surveys<whatever>开头的URI一样匹配,因此要么将URL设置更改为

url(r'^surveys/$', views.surveys_view, name='survey-list'),
url(r'^surveys/(?P<survey>survey1|survey2)', views.surveys_view, name='survey-details'),

或更改订单

url(r'^surveys/(?P<survey>survey1|survey2)', views.surveys_view, name='survey-detail'),
url(r'^surveys', views.surveys_view, name='survey-list'),

注意:请注意,名称参数也有更改,因为最好将其设置为唯一值

最新更新