Если вы посмотрите на исходные коды 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.
context
это то, что вы ищете!