我正在尝试使Django的开发服务器为通过python manage.py collectstatic
命令收集的静态文件提供服务。现在我失败了。如何使用Django的开发服务器来收集静态文件?
我的Django的设置文件声明如下:
STATIC_ROOT = os.path.join(WWW_PATH, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(ROOT_PATH, 'front', 'public'),
os.path.join(ROOT_PATH, 'front', 'dist')
)
这从os.path.join(ROOT_PATH, 'front', 'public')
和os.path.join(ROOT_PATH, 'front', 'dist')
到STATIC_ROOT
使得collectstatic
命令复制文件,它完美的作品。
我假设它也会告诉Django查找静态文件到STATIC_ROOT
目录,我错了。即使STATIC_ROOT
目录不存在,Django也能够提供静态文件。但是,如果缺少os.path.join(ROOT_PATH, 'front')
,则Django不再提供静态文件。
这表明Django继续从源目录中提供静态文件,而不是从STATIC_ROOT
。
所以我想知道是否有方法指示Django的开发服务器提供来自STATIC_ROOT
的静态文件。任何提示?
编辑:
后@ e4c5的答案,我修改了我的根urls.py
这样的:
static_patterns = [
url(r'^$', TemplateView.as_view(template_name='index.html'))
]
urlpatterns = [
url(r'^', include(static_patterns)),
url(r'^admin/', admin.site.urls),
url(r'^api/resa/', include('reservation.urls')),
url(r'^api/auth/', include('authentication.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
不幸的是,它并没有预期的结果和Django不查找静态文件STATIC_ROOT
,我怀疑它实际上是在STATIC_ROOT
中寻找静态文件。
这里是我可以在控制台访问索引页时看到:
[04/Jun/2017 16:18:05] "GET/HTTP/1.1" 200 1411
[04/Jun/2017 16:18:05] "GET /static/style/index.css HTTP/1.1" 404 1759
[04/Jun/2017 16:18:05] "GET /static/style/react-datetime.css HTTP/1.1" 404 1786
[04/Jun/2017 16:18:05] "GET /static/style/react-big-calendar.css HTTP/1.1" 404 1798
[04/Jun/2017 16:18:05] "GET /static/script/bundle.js HTTP/1.1" 404 1762
这里设置变量的内容:
>>> from django.conf import settings
>>> settings.WWW_PATH
'/home/tryph/PycharmProjects/resa/www'
>>> settings.STATIC_ROOT
'/home/tryph/PycharmProjects/resa/www/static'
>>> settings.STATIC_URL
'/static/'
这里是WWW_PATH
内容目录:
/home/tryph/PycharmProjects/resa/www
└── static
├── admin
│ [...]
├── favicon.ico
├── index.html
├── rest_framework
│ [...]
├── script
│ └── bundle.js
└── style
├── index.css
├── react-big-calendar.css
└── react-datetime.css
是不是一个文件夹中manage.py命名的背部和'ROOT_PATH = os.path.dirname(BASE_DIR)'' = WWW_PATH os.path中。加入(ROOT_PATH,'www')' 'STATIC_ROOT = os.path.join(WWW_PATH,'static')'表示它正在寻找'app/back/www/static'中的静态文件? – filtfilt
@filtfilt感谢您的建议。 'settings.py'中定义的路径似乎是从'settings.py'位置相对定义的,而不是'manage.py'位置。所以'STATIC_ROOT'路径的一切看起来都很好。请参阅我的编辑更多细节。 – Tryph
这个怎么样? *所有的静态文件都是通过gulp管理的,并且生活在'public'和'dist'dirs * – Robert