Django 重定向与 kwargs 不工作
Django redirect with kwargs not working
我看过类似的问题,这不是重复的。我有一个简单的重定向,它接收不起作用的 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 模式如下所示:
url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[-\w]+)/$',
views.DespuesContacto.as_view(), name="despues_contacto"),
?¿ 我错过了什么?也许这是显而易见的……但我的眼睛已经厌倦了寻找错误。是正则表达式吗?
好的,所以正则表达式是错误的,它不接受“@”或“.”。 ... 并且因为如 this SO 问题中所述,将正则表达式用于电子邮件真的很困难。我处理了电子邮件,然后将其发送到 url,并再次手动构建它:
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"
.很简单。您只需将 url 的正则表达式更改为 undestand 参数具有 @ 字符。
urls.py
url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[\w\-@.]+)/$',
views.DespuesContacto.as_view(), name='despues_contacto'),
我看过类似的问题,这不是重复的。我有一个简单的重定向,它接收不起作用的 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 模式如下所示:
url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[-\w]+)/$',
views.DespuesContacto.as_view(), name="despues_contacto"),
?¿ 我错过了什么?也许这是显而易见的……但我的眼睛已经厌倦了寻找错误。是正则表达式吗?
好的,所以正则表达式是错误的,它不接受“@”或“.”。 ... 并且因为如 this SO 问题中所述,将正则表达式用于电子邮件真的很困难。我处理了电子邮件,然后将其发送到 url,并再次手动构建它:
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"
.很简单。您只需将 url 的正则表达式更改为 undestand 参数具有 @ 字符。
urls.py
url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[\w\-@.]+)/$',
views.DespuesContacto.as_view(), name='despues_contacto'),