2011-03-30 74 views

回答

0

没有(干净)的方式来做到这一点,我认为这不是一个好主意。我不知道为什么你会希望在那里发出请求,但请记住请求对象上的许多事情可能会被用户篡改,并​​且使用它来做文件系统操作可能是不安全的。

但是有办法做到这一点,Django和Python社区大多数人都不赞成这种方法,但是您可以在中间件中设置本地线程并在您的函数中访问该线程。

middleware.py

import threading 

mydata = threading.local() 

class RequestHackMiddleware(object): 
    def process_request(self, request): 
     mydata.request = request 

models.py

from middleware import mydata 

def get_image_path(instance, filename): 
    # do stuff with mydata.request