如何在URL处理器中传递extra_context给auth_views.password_change

2 投票
1 回答
669 浏览
提问于 2025-04-17 05:10

我有一个用于更改密码的URL处理程序,像这样:

                       url(r'^password/change/$',
                           auth_views.password_change,
                           {'template_name' : 'account/password/password_change_form.html'},
                           name='auth_password_change'),

一切都很好,我的模板加载正常,密码更改也按预期工作。不过,我的模板需要访问 request.user。但是,默认情况下,request 对象并不会从内置的 auth_views.password_change 视图传递给模板。

我知道 auth_views.password_change 视图可以传递额外的上下文,这样它就能把这些信息传递给模板。可我不知道如何在我的URL处理程序中做到这一点。

我知道我可以写一个新的视图来包装 auth_views.password_change,但我想知道有没有更简单的方法可以直接在URL处理程序中实现。

你能告诉我怎么修改我现在的URL处理程序,把当前的 request 对象作为 extra_context 传递给 auth_views.password_change 视图吗?

1 个回答

2

通常你会在网址配置文件(urlconf)中处理这个问题,但你不能在额外的上下文(extra_context)中传递request.user,因为urls.py无法访问请求(request)。

不过,password_change这个功能,和所有内置的视图一样,使用RequestContext来渲染模板。这意味着在这里会自动有一个user对象(这个对象是通过django.contrib.auth.context_processors.auth传递进来的,除非你在settings.py的CONTEXT_PROCESSORS列表中把它删掉了)。

撰写回答