Django redirect()带有其他参数

时间:2018-04-08 19:22:58

标签: python django django-views

为什么当我尝试传递其他参数时,我收到错误:

以下工作正常! (没有参数)

def first(request):
    return redirect('confirm')

def confirm(request):
    return render(request, 'template.html')

然而,这是我需要的,它没有按预期工作,我得到错误:

  

反向'确认'使用关键字参数' {'电子邮件':'电子邮件'}'未找到。 1种模式尝试过:[' book / booking_confirmation / $']

def first(request):
    return redirect('confirm', email='some_email')

def confirm(request, email):
    return render(request, 'template.html', { 'email': email} )

urls.py

urlpatterns += [
    url(r'^booking_confirmation/$', views.confirm, name='confirm'),
]

2 个答案:

答案 0 :(得分:2)

如果您不想通过重定向中的网址传递电子邮件,则最简单的方法是将其存储在会话中。

def first(request):
    request.session['email'] = 'some_email'
    return redirect('confirm')

def confirm(request):
    return render(request, 'template.html', {'email': request.session['email']})

答案 1 :(得分:1)

配置网址格式以捕获电子邮件。 e.g。

urlpatterns += [
    url(r'^booking_confirmation/(?P<email>\w+)$', views.confirm, name='confirm'),
]

您可以为捕获的电子邮件使用更强大的模式匹配,而不是仅捕获单词字符。