问题 Django runserver不在开发中提供静态文件


我正在使用Django runserver 为了我的发展。当我部署到我的生产服务器时,我可以看到所有静态文件,但不能在本地计算机上看到。

我做到了 collectstatic 我已经定了 DEBUG = True

我在网上发现了许多不同的意见,最突出的是 STATICFILES_DIRS,但这对我不起作用。

如何设置它以便在我的开发环境中我可以看到静态文件,当我将文件上传到服务器时,我不需要对生产环境进行任何更改即可正常工作。

编辑 - 我的 urls.py 文件:

from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
import newsflashes
import settings

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('newsflashes.urls')),
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

编辑 - 文件结构:

我有两个目录,静态和动态。内部静态是静态文件,动态目录中是django应用程序。

编辑设置:

我的相关设置如下

STATIC_ROOT = os.path.join(BASE_DIR, '..', 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = ()

8309
2017-12-05 11:19


起源

你有没有 跟着文件 并添加适当的行到您的 urls.py - Timmy O'Mahony
是的,我在网址中添加了urls文件 - Meir
您应该告诉我们您的设置(STATIC_ROOT,STATIC_URL,STATICFILES_DIRS)和静态文件位置 - Lukasz Koziara
添加到上面的问题。我应该添加其他东西吗? - Meir


答案:


我设法修复它。

我在我的项目文件夹中创建了一个名为static的另一个目录static,并在那里复制了我的静态文件。

然后我补充说:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
import settings
if settings.DEBUG == True:
    urlpatterns += staticfiles_urlpatterns()

对我的 urls.py

STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

对我的 settings.py

然后,当我部署时执行 manage.py collectstatic 并且由于Apache配置正确,一切都会正常工作!

基于 http://dlo.me/archives/2013/01/14/how-to-serve-static-files-django/

谢谢大家。


16
2017-12-05 13:02



感谢分享! - hanleyhansen
为了澄清,在settings.py中确保将DEBUG设置为true,然后在urls.py中添加上面的urls.py代码。 - Grant Eagon
我只需要将STATICFILES_DIRS指向我的(源)静态文件目录。之后,运行collectstatic收集文件,之后runserver将为它们提供服务。谢谢你的暗示:) - critikaster
默认情况下已经包含在内 django.contrib.staticfiles.urls - Yeo