#django #django-templates #django-registration
#django #django-шаблоны #django-регистрация
Вопрос:
Я пытаюсь передать новую переменную в шаблон в django-registration. Вот код, который у меня есть —
# in the template:
<table>
{% for user in user_list %}
<tr>
<td>{{ user.username }}</td>
</tr>
{% endfor %}
<table>
Куда бы я поместил следующее user_list
определение?
from django.contrib.auth.models import User
'user_list':User.objects.all()
Ответ №1:
вы можете добавить новый метод к TEMPLATE_CONTEXT_PROCESSORS в settings.py , например
#setting.py
TEMPLATE_CONTEXT_PROCESSORS = (
'other_contexts',
'yourproject.yourcontextfile.yourcontextmethod',
)
и затем в вашей yourcontextfile.py
записи yourcontextmethod
вот так:
from django.contrib.auth.models import User
def yourcontextmethod(request):
return {'user_list':User.objects.all()}
Комментарии:
1. отлично, это работает. Спасибо. Будет ли это означать, что ‘user_list’ является глобальной переменной, которая может использоваться в ЛЮБОМ шаблоне? Что произойдет, если я определю переменную user_list в функции views, переопределит ли это ее?
2. да, это глобальная проверка. но я не знал о переопределении представлением, пожалуйста, попробуйте и оставьте комментарий
3. Да, я попробовал это, и определение локальной переменной с тем же именем в
views.py
переопределяет переменную, определенную в методе context.