Обновление: позвольте мне прояснить, что лично я думаю, что вы должны написать свой собственный вид входа в систему, если вы хотите влиять на контекст, а именно потому, что он очень прост (вы можете скопировать и вставить ~ 20 строк в свой собственный вид).
Так как мне больше всего нравится работать со stackoverflow, найти способ обойти все равно, вот хакерская альтернатива:
Если вы хотите использовать встроенную страницу администратора, единственный способ, который я вижу, это прикрепить свойства к AuthenticationForm
.
Вот django.contrib.auth.views.login
:
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm):
....
return render_to_response(template_name, {
'form': form,
redirect_field_name: redirect_to,
'site': current_site,
'site_name': current_site.name,
}, context_instance=RequestContext(request))
Единственное место, где мы можем «заехать» в шаблон входа, не оказывая положительного влияния ни на что другое, - это AuthenticationForm
.
from django.contrib.auth.forms import AuthenticationForm
AuthenticationForm.foobar = 'Hello'
...
(r'^accounts/login/$', 'django.contrib.auth.views.login', \
{'authentication_form':AuthenticationForm),
# template
{{ form.foobar }}
Другой альтернативой является использование контекстного процессора , , который внедряет переменные в каждое представление, которое использует RequestContext
. Используйте это, если ваша переменная также используется в других шаблонах.