Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在Django中获取request.user表单pre_save_Python_Django_Python 3.4 - Fatal编程技术网

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这是一个好的选择,我看不到任何更好的方法