为django-ajax-uploader更改UPLOAD_DIR

时间:2013-06-23 02:34:46

标签: django subclass ajax-upload django-file-upload

新手先生。我设法将django-ajax-upload安装到我的django研究项目中。并使用它的初始视图,网址和模板来查看它是如何工作的。我成功将文件上传到了默认目录'upload'。

现在,我正在尝试将django-ajax-upload'使用的UPLOAD_DIR更改为'endorsement'文件夹。

关于django-ajax-upload: UPLOAD_DIR位于LocalUploadBackend类下的local.py中。

/ajaxuploader/backends/local.py

class LocalUploadBackend(AbstractUploadBackend):
    UPLOAD_DIR = "uploads"

    def setup(self, filename, *args, **kwargs):
        self._path = os.path.join(
            settings.MEDIA_ROOT, self.UPLOAD_DIR, filename)
        try:
            os.makedirs(os.path.realpath(os.path.dirname(self._path)))
        except:
            pass
        self._dest = BufferedWriter(FileIO(self._path, "w"))

ajax操作正在调用import_uploader = AjaxFileUploader()上传文件。 AjaxFileUploader具有此__init__

的位置
class AjaxFileUploader(object):
    def __init__(self, backend=None, **kwargs):
        if backend is None:
            backend = LocalUploadBackend
        self.get_backend = lambda: backend(**kwargs)

我不确定这是否是通过子类更改UPLOAD_DIR的正确方法。这是我的代码。

from ajaxuploader.views import AjaxFileUploader
from ajaxuploader.backends.local import LocalUploadBackend

class myajaxfileuploader(AjaxFileUploader):
    def __init__(self, backend=None, **kwargs):
        local = LocalUploadBackend.UPLOAD_DIR
        local = "endorsement"
        super(myajaxfileuploader,self).__init__(backend=local, **kwargs)

我可以看到文件上传文件按钮但是上传失败了。 这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

* 这个问题是没有阅读django-ajax-upload github问题部分,解决方案一直存在

我改变了我的初始import_uploader = AjaxFileUploader()import_uploader = AjaxFileUploader(UPLOAD_DIR='endorsement')

django-ajax-upload支持这个参数来改变upload_dir ..grr ...