我见过类似的问题,这不是重复的。我有一个简单的重定向,接收不起作用的kwargs,我不知道为什么。 docs给出了这个例子:
def my_view(request):
...
return redirect('some-view-name', foo='bar')
这正是我正在做的事情:
...
...
return redirect('perfiles:despues_contacto', razon_contacto='donacion', correo_contacto='thrall@gmail.com')
网址格式如下:
url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[-\w]+)/$',
views.DespuesContacto.as_view(), name="despues_contacto"),
?¿我错过了什么?也许这是显而易见的......但我的眼睛已经厌倦了试图找到错误。它是正则表达式吗?
答案 0 :(得分:1)
好的,所以正则表达式是错的,它没有接受&#34; @&#34;或&#34;。&#34; ...并且因为正如this SO问题所述,使用正则表达式进行电子邮件确实很困难。我处理了电子邮件,然后将其发送到网址,并再次手动构建它:
email_for_url = email.split(".")[0].replace("@", "-")
return redirect('perfiles:despues_contacto', razon_contacto=razon_contacto, correo_contacto=email_for_url)
...
def get_context_data(self, **kwargs):
....
email = kwargs["email"].replace("-", "@") + ".com"
答案 1 :(得分:1)
。非常简单。您只需将url的正则表达式更改为未定义参数,即@ character。
urls.py
url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[\w\-@.]+)/$',
views.DespuesContacto.as_view(), name='despues_contacto'),