【问题标题】:Can't access current CustomUser in Django View but works in Template无法在 Django 视图中访问当前的 CustomUser,但可以在模板中使用
【发布时间】:2019-01-06 20:17:31
【问题描述】:

我正在 Django 中构建一个从 DjangoX 开始的项目,我只是想获取当前登录的用户名或用户 ID。我尝试了各种组合和方法,其中一些我已经留在 cmets 中,基于其他在线问题和答案,但没有让它发挥作用。

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'),
...

【问题讨论】:

    标签: django django-custom-user


    【解决方案1】:

    这是一个基于类的视图。您不能在类级别编写依赖于请求的代码。要么切换到基于函数的视图,要么将该代码放入get_context_data 方法中。

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 2018-07-01
      • 2021-02-14
      • 1970-01-01
      相关资源
      最近更新 更多