Django中的访问请求形成Dynamic FileField.upload_to路径

时间:2011-03-30 10:43:10

标签: django django-forms

我正在使用this文章来创建保存文件的动态路径。无论如何,我可以从文章中描述的get_image_path函数中访问请求对象吗?

1 个答案:

答案 0 :(得分: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