Django重定向与kwargs无法正常工作

时间:2016-04-05 23:51:20

标签: django django-urls

我见过类似的问题,这不是重复的。我有一个简单的重定向,接收不起作用的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"),

?¿我错过了什么?也许这是显而易见的......但我的眼睛已经厌倦了试图找到错误。它是正则表达式吗?

2 个答案:

答案 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'),