如何通过我自己的模板使用内置密码重置/更改视图

2024-04-02

例如我可以指出url '^/accounts/password/reset/$' to django.contrib.auth.views.password_reset在上下文中使用我的模板文件名,但我认为需要发送更多上下文详细信息。

我需要确切地知道为每个密码重置和更改视图添加什么上下文。


如果你看一下来源django.contrib.auth.views.password_reset http://code.djangoproject.com/browser/django/trunk/django/contrib/auth/views.py你会看到它使用RequestContext http://code.djangoproject.com/browser/django/trunk/django/template/__init__.py。结果是,您可以使用上下文处理器来修改上下文,这可能允许您注入所需的信息。

B名单有一个很好的上下文处理器简介 http://www.b-list.org/weblog/2006/jun/14/django-tips-template-context-processors/.

编辑(我似乎对实际问题是什么感到困惑):

你会注意到password_reset接受一个名为的命名参数template_name:

def password_reset(request, is_admin_site=False, 
            template_name='registration/password_reset_form.html',
            email_template_name='registration/password_reset_email.html',
            password_reset_form=PasswordResetForm, 
            token_generator=default_token_generator,
            post_reset_redirect=None):

Check 重设密码 https://docs.djangoproject.com/en/1.9/topics/auth/default/#django.contrib.auth.views.password_reset了解更多信息。

...因此,使用 urls.py 如下:

from django.conf.urls.defaults import *
from django.contrib.auth.views import password_reset

urlpatterns = patterns('',
     (r'^/accounts/password/reset/$', password_reset, {'template_name': 'my_templates/password_reset.html'}),
     ...
)

django.contrib.auth.views.password_reset将调用 URL 匹配'/accounts/password/reset'与关键字参数template_name = 'my_templates/password_reset.html'.

否则,您不需要提供任何上下文password_reset视图会自行处理。如果您想查看可用的上下文,您可以触发TemplateSyntax错误并查看堆栈跟踪,找到具有名为的局部变量的帧context。如果您想修改上下文,那么我上面所说的有关上下文处理器的内容可能就是正确的选择。

总之:使用自己的模板需要做什么?提供一个template_name调用视图时传递给视图的关键字参数。您可以通过包含字典作为 URL 模式元组的第三个成员来向视图提供关键字参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过我自己的模板使用内置密码重置/更改视图 的相关文章

随机推荐