Управление данными пользователя на Django HTML с помощью передачи данных

Я делаю небольшой пример проекта на Django. Я делаю блог.

В файле views.py я могу отрисовать index.html с постами, передав словарь posts в третий аргумент функции render, как показано ниже.

def home(request):
    posts = post.objects.all() 
    return render(request, 'index.html', {'posts':posts})

Сделав это, я могу использовать данные постов в HTML, как показано ниже

{% for post in posts %}

<a href="{% url 'detail' post.id %}">
    <h3>{{ post.title }}</h3>
    <h4>{{ post.id }}</h4>
</a>
<p>{{ post.date }}</p>

Однако, когда мой преподаватель учил меня, как реализовать функцию входа/выхода, я обнаружил, что он не передавал данные пользователя, но он мог управлять данными "пользователя" в HTML, как показано ниже

{% if user.is_authenticated %}
{{ user.username }}님
<a href="{% url 'logout' %}">Logout</a>
{% else %}
<a href="{% url 'login' %}">Login</a>
{% endif %}
def login(request):
    if request.method=='POST':
        username = request.POST['username']
        password = request.POST['password']

        user = auth.authenticate(request, username=username, password=password)
        if user is not None:
            auth.login(request, user)
            return redirect('home')
        else:
            return render(request, 'login.html')

    else:
        return render(request, 'login.html')

Как if user_is_authenticated можно успешно отобразить HTML без передачи данных 'user' в views.py?

Объект контекста User предоставляется шаблону процессором контекста django.contrib.auth.context_processors.auth, определенным в вашем файле настроек.

https://docs.djangoproject.com/en/2.2/_modules/django/contrib/auth/context_processors/

Вернуться на верх