Si vous jetez un coup d'oeil aux sources pour django.contrib.auth.views.password_reset vous verrez qu'il utilise RequestContext
. Le résultat est que vous pouvez utiliser les processeurs de contexte pour modifier le contexte, ce qui peut vous permettre d'injecter les informations dont vous avez besoin.
La liste B a une bonne introduction aux processeurs de contexte .
Edit (il semble que j'ai été confus quant à la question réelle) :
Vous remarquerez que password_reset
prend un paramètre nommé appelé 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):
... donc, avec un urls.py comme :
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
sera appelé pour les URLs correspondant à '/accounts/password/reset'
avec l'argument mot-clé template_name = 'my_templates/password_reset.html'
.
Sinon, vous n'avez pas besoin de fournir de contexte car l'option password_reset
La vue s'occupe d'elle-même. Si vous voulez voir quel contexte vous avez à disposition, vous pouvez déclencher un TemplateSyntax
et regardez dans la trace de la pile, trouvez le cadre avec une variable locale nommée context
. Si vous voulez modifier le contexte, ce que j'ai dit plus haut à propos des processeurs de contexte est probablement la solution.
En résumé : que devez-vous faire pour utiliser votre propre modèle ? Fournir un template_name
argument du mot-clé à la vue lorsqu'elle est appelée. Vous pouvez fournir des arguments de mots-clés aux vues en incluant un dictionnaire comme troisième membre d'un tuple de motif d'URL.