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发布模块的步骤分享
Feb 21 Python
决策树的python实现方法
Nov 18 Python
浅析Python编写函数装饰器
Mar 18 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
Python sqlite3查询操作过程解析
Feb 20 Python
Python字符串格式化f-string多种功能实现
May 07 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
浅谈php的优缺点
2015/07/14 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
python client使用http post 到server端的代码
2013/02/10 Python
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
Python 在局部变量域中执行代码
2020/08/07 Python
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
网吧最新创业计划书范文
2014/03/27 职场文书
就业意向书范文
2014/04/01 职场文书
2014年消防工作总结
2014/11/21 职场文书
九寨沟导游词
2015/02/02 职场文书
技术转让协议书
2016/03/19 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
Java tomcat手动配置servlet详解
2021/11/27 Java/Android