Django之全局使用request.user.username的实例详解


Posted in Python onMay 14, 2020

我就废话不多说了,大家还是直接看代码吧!

def pro_mgr():
  """
  获取当前登陆用户的项目
  :return:
  """
  if DEVELOP_USER_NAME == 'admin':
    return Project.objects.all()
  return Project.objects.filter(prj_mgr=DEVELOP_USER_NAME)


class DeployApplyForm(ModelForm):
  # project = forms.ModelChoiceField(queryset=pro_mgr())
  bgn_time = forms.DateTimeField(initial=datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), label=u'开始',
                  input_formats=['%Y-%m-%dT%H:%M:%S'], widget=forms.DateTimeInput(
      attrs={'type': 'datetime-local', 'emptyTips': u'请选择时间', 'step': '1'}))
  end_time = forms.DateTimeField(initial=datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), label=u'结束',
                  input_formats=['%Y-%m-%dT%H:%M:%S'], widget=forms.DateTimeInput(
      attrs={'type': 'datetime-local', 'emptyTips': u'请选择时间', 'step': '1'}))

  class Meta:
    model = DeployApply
    fields = '__all__'


  def __init__(self, *args, **kwargs):
    prj_mgr = kwargs.pop('prj_mgr', '')
    super(DeployApplyForm, self).__init__(*args, **kwargs)
    if prj_mgr == 'admin':
      self.fields['project'] = forms.ModelChoiceField(queryset=Project.objects.all())
    else:
      self.fields['project'] = forms.ModelChoiceField(queryset=Project.objects.filter(prj_mgr=prj_mgr))
//views.py
deployApplyForm = DeployApplyForm(initial=wfContent[0], prefix='deployApply',prj_mgr=request.user.username)
//settings.py
# DEVELOP模式下登陆用户
DEVELOP_USER_NAME = 'admin'

补充知识:Django 中 request.user 调用用户名时出现 AnonymousUser(匿名对象)的错误

说明

已经添加了额外的属性,现在想通过request.user的方式获取,打印request.user是一个AnonymousUser对象,无法获取 user 值!

原因

1. 没有登录账号或者无法登录成功。

2. 登录成功但是在登录代码中没有注册 cookie,导致无法验证身份!

3. 其它原因。

解决方法

1. 登录账号,你也可以试着使用 admin 账户登录后,看看能否解决。

2. 参考以下代码,在 login 中注册cookis(大多数是这种情况):

auth_obj = auth.authenticate(request, username=username, password=password)
if auth_obj:
  # 需要auth验证cookie
  auth.login(request, auth_obj)
  ....

3. 换另一种方式重写 login 。

以上这篇Django之全局使用request.user.username的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现360皮肤按钮控件示例
Feb 21 Python
Python中字符编码简介、方法及使用建议
Jan 08 Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
python并发和异步编程实例
Nov 15 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
Python 20行简单实现有道在线翻译的详解
May 15 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
如何在mac版pycharm选择python版本
Jul 21 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 Python
Django使用Profile扩展User模块方式
May 14 #Python
python网络编程之五子棋游戏
May 14 #Python
Jupyter notebook如何修改平台字体
May 13 #Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 #Python
Django 允许局域网中的机器访问你的主机操作
May 13 #Python
Django 用户登陆访问限制实例 @login_required
May 13 #Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 #Python
You might like
什么是MVC,好东西啊
2007/05/03 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
2010/04/15 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
js实现下拉菜单效果
2017/03/01 Javascript
JavaScript实现时间表动态效果
2017/07/15 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
Python requests设置代理的方法步骤
2020/02/23 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
Python错误的处理方法
2020/06/23 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
公司门卫岗位职责
2015/04/13 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js