如何在Windows上管理媒体文件?

时间:2015-06-10 06:15:19

标签: django django-templates

我想在开发应用程序时获取Django的媒体文件。但他们只是没有成立。这是我的设置:

STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR

STATICFILES_DIRS = (
    STATIC_ROOT + '\\projectpackage\\static\\',
)

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR + '\\projectpackage\\media\\'

Templatetag:

<img class="img-responsive" src="{{ project.image.url }}" alt="">

的url:

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

    url(r'^', 'views.index', name='index'),


    url(r'^markdown/', include('django_bootstrap_markdown.urls')),

]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(STATIC_URL, document_root=STATIC_ROOT)
urlpatterns += static(MEDIA_URL, document_root=MEDIA_ROOT)

我看不出自己的错误,因为我在其他问题上尝试了其他所有建议。一切都很好看。静态文件运行良好,媒体上传到media/prj_img,但当我尝试在模板上显示图像时,我得到了如此奇怪的结果:

<img class="img-responsive" src="/media/C%3A/Development/projectdirectory/projectpackage/media/prj_img/wallhaven-131_od9FWLX.jpg" alt="">

我该如何修复此媒体错误?这很奇怪,因为一切看起来都很正确。为什么url中有完整路径?

编辑:

BASE_DIR

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

此外,我已经发现我错了upload_to并将其更改为prj_img。现在我有以下链接:

<img class="img-responsive" src="/media/prj_img/wallhaven-24700.jpg" alt="">

但它仍然没有取代。

1 个答案:

答案 0 :(得分:1)

我对你的代码有很多评论。

STATIC_ROOT位置不合适。使用您的设置collectstatic命令将把所有内容放在项目的目录中。像这样改变:

STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')

但请注意,此文件夹在生产中是可访问的(权限和django-settings)。

使用os.path.join加入文件夹:

STATICFILES_DIRS = (
    os.path.join(STATIC_ROOT, 'projectpackage', 'static')
)

此网址格式必须是最后一个并包含$

url(r'^$', views.index, name='index'), # do not pass strings

这两个网址格式相同(docs):

urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(STATIC_URL, document_root=STATIC_ROOT)

而且,你不需要它们。请确保INSTALLED_APPS设置包含'django.contrib.staticfiles'