【问题标题】:Missing leading slash on images uploaded with Django Filebrowser使用 Django Filebrowser 上传的图像缺少前导斜杠
【发布时间】:2017-03-23 18:17:40
【问题描述】:

我在尝试上传图片时遇到了 Django-Filebrowser 的问题。我正在使用以下版本:Django 1.8.7Filebrowser 3.6.4Python 2.7

当我尝试上传图片时,一切正常,上传的文件放在正确的文件夹中没有任何问题;但生成的文件 url 没有任何必要的前导斜杠来正确提供文件。

例如,如果我尝试上传“test.jpg”,最终的图像 url 将是“uploads/test.jpg”和“_versions/test_xxx.jpg”,即使在文件浏览器面板中也会产生问题,因为生成的请求将发送给http://localhost:8000/admin/filebrowser/browse/uploads/test.jpghttp://localhost:8000/admin/filebrowser/browse/_versions/test.jpg,而不是http://localhost:8000/uploads/test.jpghttp://localhost:8000/_versions/test.jpg,以便服务器可以正常服务。

(请注意,文件浏览器面板 url 是 http://localhost:8000/admin/filebrowser/

这是我的设置:

urls.py:

urlpatterns = [
    url(r'^admin/filebrowser/', include(site.urls)),
    url(r'^admin/', include(admin.site.urls)),

    url(r'^', include('pages.urls')),
    url(r'^blog/', include('articles.urls')),

    url(r'^tinymce/', include('tinymce.urls')),
    url(r'^grappelli/', include('grappelli.urls')),
]

settings.py

FILEBROWSER_DIRECTORY = 'uploads/'
FILEBROWSER_VERSIONS_BASEDIR = '_versions/'

FILEBROWSER_DIRECTORY 中添加前导斜杠会触发 SouspiciusFileOperation 错误,因为“/uploads/”位于项目文件夹之外。

提前致谢。

【问题讨论】:

    标签: python django file-browser django-filebrowser


    【解决方案1】:

    我终于明白了。显式设置MEDIA_ROOTMEDIA_URL 就足够了:

    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
    

    现在 Filebrowser 将在这个新的父文件夹中搜索 "uploads/""_versions/" 文件夹,因此需要相应地提供 "/media"

    【讨论】:

      猜你喜欢
      • 2013-03-19
      • 2016-02-05
      • 2014-07-12
      • 2017-03-01
      • 1970-01-01
      • 2021-07-02
      • 2016-04-24
      • 2019-01-11
      • 1970-01-01
      相关资源
      最近更新 更多