2016-09-20 87 views
1

我想在开发(DEBUG=True)模式下在Django中提供静态文件。我有这样的目录结构:在Django上没有提供静态文件

my_project/ 
    ... 
    static/ 
    img.png 

在我settings.py我有这样的:

STATIC_ROOT = os.path.join(BASE_DIR, "static") 
STATICFILE_DIRS = [ 
    os.path.join(BASE_DIR, "static"), 
] 
STATIC_URL = '/static/' 
STATICFILES_FINDERS = ( 
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

my_project/urls.py我有这样的:

from django.conf import settings 
from django.conf.urls import include, url 
from django.conf.urls.static import static 
from django.contrib import admin 

urlpatterns = [ 
    # ... 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('app.landing.urls')), 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

这一切都似乎是正确的。当我访问http://127.0.0.1:8000/static/img.png虽然,我得到了一个404.

我做错了什么?

+0

从文档:在开发过程中,如果使用django.contrib.staticfiles,这将是自动的runserver完成时DEBUG设置为True(请参阅django.contrib.staticfiles.views.serve())。 –

+0

这是一个宁静的建筑吗?我的意思是如果你有一个单独的前端应用程序运行在另一个端口? – AceLearn

+0

你用过nginx吗? – Windsooon

回答

0

您可以通过许多不同的方式进行调试。这是我的方法。

主要settings.py:

DEBUG = False 
TDEBUG = True 

urls.py:

from django.conf import settings 
import os 

if settings.TDEBUG: 
    urlpatterns += patterns('', 
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', 
     {'document_root': os.path.join(os.path.dirname(__file__), 'static')}), 
    )