无法访问 Django 视图中的当前 CustomUser,但可以在模板中使用
Can't access current CustomUser in Django View but works in Template
我正在从 DjangoX 开始在 Django 中构建一个项目,我只是想获取当前登录的用户名或用户 ID。我已经尝试了各种组合和方法,其中一些我已经留在评论中,基于其他在线问题和答案,但没有让它起作用。
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'),
...
这是一个基于class的视图。您不能在 class 级别编写依赖于请求的代码。要么切换到基于函数的视图,要么将该代码放入 get_context_data
方法中。
我正在从 DjangoX 开始在 Django 中构建一个项目,我只是想获取当前登录的用户名或用户 ID。我已经尝试了各种组合和方法,其中一些我已经留在评论中,基于其他在线问题和答案,但没有让它起作用。
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'),
...
这是一个基于class的视图。您不能在 class 级别编写依赖于请求的代码。要么切换到基于函数的视图,要么将该代码放入 get_context_data
方法中。