在所有视图django中获取用户上下文?

Posted

技术标签:

【中文标题】在所有视图django中获取用户上下文?【英文标题】:Get the user context in all views django? 【发布时间】:2021-06-08 05:16:39 【问题描述】:

我使用模板语法来设置应用程序顶部栏的权限,就像这样

顶栏权限

% if user.is_authenticated %
# Top bar html code
% endif %

但问题是,当我通过身份验证的用户时,如果他们有正确的 url:uuid 链接,他们可以访问其他用户的个人资料图片和姓名。

我设法通过将此语法放入模板中来解决此问题

% if object == request.user %
  % if object.pk %   
    % endif %    
% endif % 

这解决了可以从个人资料视图访问 request.user 的页面上的问题。如何一次访问所有视图中的 request.user?

【问题讨论】:

不明白你的意思我如何一次访问所有视图中的 request.user?因为你所有的视图都可以访问 request.user。顺便说一句,模板中不要使用request.user,而只是使用user 问题是答案没有回答问题@TheoMa你的问题是关于视图的,我们在谈论模板:) 它没有用,问题是希望只有正确的登录用户才能在顶部栏中设置信息。因为现在这仅适用于配置文件模板,我认为它是因为用户上下文。当我更改为另一个 URL 时,我无法获取用户实例,因此顶部栏不显示 % if object == request.user % % if object.pk % % endif % % endif %跨度> 解决了这个问题,谢谢,我将模板标签移动到这个命令 % if user.is_authenticated % % if user == request.user % % if user.pk % % endif % % endif % % endif % 【参考方案1】:

解决了我将模板标签移动到这个顺序的问题

% if user.is_authenticated %
    % if user == request.user %
        % if user.pk %    % endif %
                                    % endif %
                                
                                    % endif %

【讨论】:

我几乎可以肯定这是错误的做法。但不知道这些如果不可能告诉之间是什么 是的...这就是我的意思:D

以上是关于在所有视图django中获取用户上下文?的主要内容,如果未能解决你的问题,请参考以下文章

对于 Django 模板 %url% 标签,我如何从通用视图上下文中找到所有 URL 参数,而不仅仅是最后一个?

如果 django 视图在另一个用户登录时对用户名执行 User.get,用户上下文是不是丢失?

为所有视图提供额外的上下文

为所有视图提供额外的上下文

Django - 视图中的上下文处理器?

Django上下文处理器