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

问题描述 投票:0回答:2

我正在使用 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)

编辑 - 文件结构:

我有两个目录,静态和动态。 static里面是静态文件,dynamic目录里面是django应用程序。

编辑 - 设置:

我的相关设置如下

STATIC_ROOT = os.path.join(BASE_DIR, '..', 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
django django-staticfiles static-files
2个回答
27
投票

我设法修复了它。

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

然后我补充道:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
import settings
if settings.DEBUG:
    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/

谢谢大家。


10
投票

我通常运行

python manage.py runserver --insecure
来强制使用 staticfiles 应用程序提供静态文件,即使 DEBUG 设置为 False。

这是他们的文档的链接。 https://docs.djangoproject.com/en/3.2/ref/contrib/staticfiles/#cmdoption-runserver-insecure

© www.soinside.com 2019 - 2024. All rights reserved.