Определение переменных шаблона в django-регистрация

#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.