如何在URL处理器中传递extra_context给auth_views.password_change
我有一个用于更改密码的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
列表中把它删掉了)。