Python 正在Django中获取request.user表单pre_save
我有一个全局Python 正在Django中获取request.user表单pre_save,python,django,python-3.4,Python,Django,Python 3.4,我有一个全局pre_save信号,需要获取当前登录的用户,即request.user 我试过下面的方法,似乎很管用但是,这似乎是个坏主意 @receiver(pre_save) def my_handler(sender, **kwargs): import inspect for frame_record in inspect.stack(): if frame_record[3] == 'get_response': request
pre_save
信号,需要获取当前登录的用户,即request.user
我试过下面的方法,似乎很管用但是,这似乎是个坏主意
@receiver(pre_save)
def my_handler(sender, **kwargs):
import inspect
for frame_record in inspect.stack():
if frame_record[3] == 'get_response':
request = frame_record[0].f_locals['request']
break
else:
request = None
print(request.user) <--- correct user is given
@接收器(预保存)
def my_处理程序(发送方,**kwargs):
进口检验
对于inspect.stack()中的帧_记录:
如果帧记录[3]=“获取响应”:
请求=帧_记录[0]。f_局部变量['request']
打破
其他:
请求=无
print(request.user)我认为中间件将是更好的解决方案。检查此项目以获得想法
顺便说一句,检查堆栈以获取请求是一个很好的例子,说明python如何被滥用并仍然可以解决问题:)如果请求存在或不存在,您是否尝试过调试代码?@AjayGupta不,但这很有效,但我可以依赖它吗?如果没有更好的选择?潜在的问题是,当您从Django shell、management command或任何其他方法创建模型时。另外,请看一看。@Falcon1这是一个好的选择,我看不到任何更好的方法