Визуализация шаблонов Django: использование тегов и использование представлений - PullRequest
0 голосов
/ 08 мая 2019

В Django при рендеринге данных в шаблонах, доступных через запрос, у нас есть 2 варианта:

  1. Получить данные в представлении и передать их в механизм шаблонов через контекст:
def my_view(request):
    username = None
    if request.user.is_authenticated:
        username = request.user.username
        context = {'username': username}
        return render(request=request, template_name='test.html', context=context)

С шаблоном, который имеет:

<p>Hello, {{ username }}<p>
Непосредственно получить значение из запроса в шаблоне:
def my_view(request):
    if request.user.is_authenticated:
        return render(request=request, template_name='test.html', context={})

С шаблоном, который имеет:

<p>hello, {{ request.user.username }}</p>

Есть ли разница между ними в терминах«правильность»?

Находится ли request во втором шаблоне просто как контекст для объекта запроса или есть другие последствия?

1 Ответ

1 голос
/ 08 мая 2019

Они верны, вообще говоря, вы, скорее всего, столкнетесь со следующей схемой

def my_view(request):
    user = request.user
    context = {'user': user}
    return render(request=request, template_name='test.html', context=context)

и

<p>hello, {{ user.username }}</p>

Обычно вы не передаете request, а user напрямую. Тогда, поскольку может быть много соответствующих user методов, в шаблоне используется нотация user.<something>.

Однако, в зависимости от вашего варианта использования, если единственное поле, которое вам потребуется от пользователя, - это имя пользователя на этой странице, нет ничего плохого в том, чтобы передать его напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...