SyntaxError:URLpattern中的语法无效

时间:2018-09-25 20:07:32

标签: python django

您遇到语法错误

url:

url(r'^reset-password/$',
    PasswordResetView.as_view(template_name='accounts/reset_password.html', 'post_reset_redirect': 'accounts:password_reset_done'), name='reset_password'),

出什么问题了?

谢谢

1 个答案:

答案 0 :(得分:2)

问题是您将字典语法与参数语法混合在一起

url(
    r'^reset-password/$',
    PasswordResetView.as_view(
        template_name='accounts/reset_password.html',
        'post_reset_redirect': 'accounts:password_reset_done'
    ),
    name='reset_password'
)

此冒号语法用于字典。对于参数,它是identifier=expression,所以:

from django.urls import reverse_lazy

url(
    r'^reset-password/$',
    PasswordResetView.as_view(
        template_name='accounts/reset_password.html',
        success_url=reverse_lazy('accounts:password_reset_done')
    ),
    name='reset_password'
)

post_reset_redirect已作为参数被删除,但是success_url执行相同的功能:在成功处理POST请求之后,它是重定向到的URL。

错误的语法可能源自以下事实:使用基于功能的视图时,您通过kwargs参数传递了参数,该参数接受了字典。

但是,基于类的视图通过.as_view(..)调用获取这些参数。此外,基于类的视图通常旨在概括该过程,并且success_url用于FormView