首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有命名空间参数的“password_reset_done”的反转

带有命名空间参数的“password_reset_done”的反转
EN

Stack Overflow用户
提问于 2018-06-08 23:39:03
回答 2查看 675关注 0票数 0

在Django 1.8下。我向我的应用程序添加了一个命名空间,但现在我在注册页面上遇到了问题。

网址: http://127.0.0.1:8000/accounts/password_reset/

myapp/urls.py中的

代码语言:javascript
复制
  ...
  from django.contrib.auth.views import password_reset, password_reset_done
  ...

  # include registration app urls 
  url(r'^accounts/', include('registration.urls')),


  url(r'^accounts/password_reset/$', password_reset,
      {'template_name': 'registration/password_reset.html'},
      name='reset-password'),

  url(r'^accounts/password_reset_success/$', password_reset_done,
       {'template_name': 'registration/password_reset_done.html'},
       name="password_reset_done"),

错误:

代码语言:javascript
复制
NoReverseMatch at /accounts/password_reset/
Reverse for 'password_reset_done' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

项目/urls/myapp.py中的

代码语言:javascript
复制
url(r'^', include('myapp.urls',
    namespace='myapp', app_name='myapp')),

django.contrib.auth.views password_reset中的 :

如果我替换,则为

代码语言:javascript
复制
if post_reset_redirect is None:
    post_reset_redirect = reverse('password_reset_done')
else:
    post_reset_redirect = resolve_url(post_reset_redirect)
if request.method == "POST":

**使用**

代码语言:javascript
复制
if post_reset_redirect is None:
    post_reset_redirect = reverse('myapp:password_reset_done')
else:
    post_reset_redirect = resolve_url(post_reset_redirect)
if request.method == "POST":

它起作用了。

因此,我认为我必须将名称空间传递到注册urls的某个位置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-09 00:33:23

当包含password_reset视图时,您可以在URL配置中设置自定义post_reset_redirect

代码语言:javascript
复制
url(r'^accounts/password_reset/$', password_reset,
  {'template_name': 'registration/password_reset.html', 'post_reset_redirect': reverse_lazy('myapp:password_reset_done')},
  name='reset-password'),

然而,我想你会发现,使用命名空间需要在密码重置过程的其他部分(例如,电子邮件模板)中进行更改。最简单的解决方案是不使用此应用程序的命名空间。

票数 0
EN

Stack Overflow用户

发布于 2019-04-02 15:51:46

当使用基于类的视图时,参数名称会发生变化,您需要使用success_url

代码语言:javascript
复制
    path(
    '/password/reset/',
    auth_views.PasswordResetView.as_view(
        template_name='registration/password_reset.html',
        success_url=reverse_lazy('account:password-reset-done')),
    name='password-reset'),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50764091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档