Не могу получить доступ к текущему CustomUser в Django View, но работает в шаблоне

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

views.py:

from django.views.generic import TemplateView, CreateView
from requests import request # <-- tried this, didn't help got AttributeError no 'user'
from django.contrib.auth import get_user_model
from django.conf import settings

class HomePageView(TemplateView):

    # get user model and current user information
    umodel = get_user_model()
    # current_user = request.user  # produces NameError: name 'request' is not defined
    # u = user  # get error that user is not defined
    # u = umodel.id # <django.db.models.query_utils.DeferredAttribute...blah blah blah>

    template_name = 'pages/home.html'
...

в моем файле.html я могу использовать это для отображения именно того, к чему я пытаюсь получить доступ, в моем представлении!

home.html (это работает)

<p>user = {{ user }}</p>
<p>user.id = {{ user.id }}</p>

urls.py

...
urlpatterns = [
    path('', IndexPageView.as_view(), name='index'),
    path('home/', HomePageView.as_view(), name='home'),
...

1 ответ

Решение

Это представление на основе классов. Вы не можете написать зависимый от запроса код на уровне класса. Либо переключитесь на представление на основе функций, либо вставьте этот код в get_context_data метод.

Другие вопросы по тегам