Django之全局使用request.user.username的实例详解
作者:Quincy379 发布时间:2021-07-20 20:50:42
标签:Django,全局,request,user,username
我就废话不多说了,大家还是直接看代码吧!
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 。
来源:https://blog.csdn.net/qq_33733970/article/details/83007007


猜你喜欢
- 一、创建元组tup1 = ('physics', 'chemistry', 1997, 2000);tup2
- 一、list 合并第一种方法:a =[91,95,97,99]b =[92,93,96,98]c = a+b # 合并c.sor
- 目前,语音识别,即将语音内容转换为文字的技术已经比较成熟,遥想当时锤子发布会上展示的讯飞输入法语音识别,着实让讯飞火了一把。由于此类语音识别
- 我们在操作 ini 配置文件的时候 可以使用 Python 的 configparser 库具体使用方法如下:from configpars
- MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。临时
- 本文实例讲述了Python单元和文档测试。分享给大家供大家参考,具体如下:单元和文档测试1、单元测试单元测试就是用来对一个模块、一个函数或者
- 目录瞎比比与 print 相比 logging 有什么优势?基础用法保存到文件多模块使用 logging使用配置文件配置 logging瞎比
- 本文实例讲述了Python使用sax模块解析XML文件。分享给大家供大家参考,具体如下:XML样例:<?xml version=&qu
- 本文实例讲述了Python使用scrapy采集数据过程中放回下载过大页面的方法。分享给大家供大家参考。具体分析如下:添加以下代码到setti
- 这些数据容易的通用操作都有哪些?除了数据的增删查改(除了tuple不可变长度和元素不可变),我们还需要下面的操作:比较比对操作计算元素数量把
- 代码如下:'返回某年总共有多少天 Function DayOfYear(ByVal y) DayOfYear = DatePart(
- 本文实例讲述了php+redis实现注册、删除、编辑、分页、登录、关注等功能。分享给大家供大家参考,具体如下:主要界面连接redisredi
- 在工作中遇到把DataGrid中绑定的后台数据库数据展示给用户时把负数变为0的小问题,现在记录下来。例子中数据表示这个样子的:-------
- Python配对函数zip()1、zip将列表、元组或其他序列的元素进行配对新建成一个元组构成的列表,它生成列表长度由最短的序列决定:#zi
- mitmproxy是一个支持HTTP和HTTPS的抓包程序,类似Fiddler、Charles的功能,只不过它通过控制台的形式操作。此外,m
- 本文实例讲述了Python列表计数及插入的用法。分享给大家供大家参考。具体如下:word=['a','b',
- 下面的代码中python2与python3的print使用区别,大家注意一下。python3需要加()才行。语法:for循环的语法格式如下:
- websocket在vue2中的封装使用先说需求: 页面中有websocket连接,进入的时候发送参数到后端,后端发送消息, 离开页面时发送
- 我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,
- 1.简要概述为什么要开通MySQL这个学习板块呢?因为这是一名数据分析师必要的一项技能。分析数据什么最重要?当然是数据,既然如此!在数据呈现