Если вы посмотрите на источники для django.contrib.auth.views.password_reset , вы увидите, что он использует RequestContext
. В результате вы можете использовать контекстные процессоры для изменения контекста, который может позволить вам вводить нужную вам информацию.
В b-списке есть хорошее введение в контекстные процессоры .
Редактировать (мне кажется, я не совсем понял, о чем речь):
Вы заметите, что 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):
Проверьте 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.