Django重定向,kwargs不工作

Django重定向,kwargs不工作,django,django-urls,Django,Django Urls,我见过类似的问题,这不是重复的。我有一个简单的重定向,接收不起作用的kwargs,我不知道为什么。下面是一个例子: def my_view(request): ... return redirect('some-view-name', foo='bar') 这正是我正在做的: ... ... return redirect('perfiles:despues_contacto', razon_contacto='donacion', correo_contacto='thral

我见过类似的问题,这不是重复的。我有一个简单的重定向,接收不起作用的kwargs,我不知道为什么。下面是一个例子:

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"),
url(r'^gracias\u por\u contactarnos/(?P[-\w]+)/(?P[-\w]+)/$),
views.DespuesContacto.as_view(),name=“despues_contacto”),

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

好的,所以正则表达式是错误的,它不接受“@”或“.”。。。而且,正如问题中所述,使用正则表达式处理电子邮件确实很困难。我处理了电子邮件,然后将其发送到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,然后再次手动构建:

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的正则表达式更改为不可理解的参数have@character

url.py

    url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[\w\-@.]+)/$',
    views.DespuesContacto.as_view(), name='despues_contacto'),
url(r'^gracias\u por\u contactarnos/(?P[-\w]+)/(?P[\w\-@.]+)/$),
views.DespuesContacto.as_view(),name='despues_contacto'),

。非常简单。您只需将url的正则表达式更改为不可理解的参数have@character

url.py

    url(r'^gracias_por_contactarnos/(?P<razon_contacto>[-\w]+)/(?P<correo_contacto>[\w\-@.]+)/$',
    views.DespuesContacto.as_view(), name='despues_contacto'),
url(r'^gracias\u por\u contactarnos/(?P[-\w]+)/(?P[\w\-@.]+)/$),
views.DespuesContacto.as_view(),name='despues_contacto'),

完整的错误消息是什么?@Selcuk
使用参数“()”和关键字参数“{'razon\u contacto':u'donacion','correo\u contacto':u”反转thrall@gmail.com找不到“}”。尝试了1种模式:[您的个人资料/个人资料/(?P[-\\w]+)/(?P[-\\w]+)/$”]
。。。看起来是正则表达式。看起来您的correo_contacto正则表达式不接受@和点(.)符号。@Selcuk是的。。。我想找一个能。。。你有吗?@Selcuk我对正则表达式一无所知。完整的错误信息是什么?@Selcuk
与参数“()”和关键字参数“{razon\u contacto':u'donacion”,“correo\u contacto':u”相反thrall@gmail.com找不到“}”。尝试了1种模式:[您的个人资料/个人资料/(?P[-\\w]+)/(?P[-\\w]+)/$”]
。。。看起来是正则表达式。看起来您的correo_contacto正则表达式不接受@和点(.)符号。@Selcuk是的。。。我想找一个能。。。你有吗?@Selcuk我对正则表达式一无所知。如果原始电子邮件在
“@”
之前已经有了
“-”
?它将重新生成错误的电子邮件。如果您必须这样做,请为
“@”
使用更复杂的标识符,即
“--”
。如果原始电子邮件在
“@”
之前已经有
“--”
,该怎么办?它将重新生成错误的电子邮件。如果您必须这样做,请为
“@”
使用更复杂的标识符,即
“--------
。谢谢您的回答。我接受这个答案。但是正则表达式是不完整的,它也需要接受dots。请更新它,我会接受的。你必须在@in regexThanks后面添加点作为答案。我接受这个答案。但是正则表达式是不完整的,它也需要接受dots。请更新它,我会接受。你必须在正则表达式中的@之后添加点