我試圖編譯靜態與django-pipeline,但無法設法在dev模式下靜態服務。由於我不是一個Django開發人員,我可能會錯誤的是Django如何爲自己提供靜態文件。這裏是我的項目結構:Django管道沒有在開發模式下提供文件
- 項目(項目本身)
- 項目(設置,全局網址配置等)
- 應用(主要和唯一的應用程序)
- static(基於應用程序的靜態文件,命名空間通過應用程序名稱文件夾)
- 靜態(共享靜態,這不是與特定的應用程序)
- CSS
- app.styl
- CSS
- 公共
- media
- static(未在開發環境中使用;只有生產:應與nginx的送達,通過collectstatic生成自動)
由於我使用的是共享靜態,我指定STATICFILES_DIRS
指令,允許Django的開發服務器collectstatic
命令查找共享靜態:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
這裏是我的settings.py
:
# for production, should be served via nginx
STATIC_ROOT= os.path.join(BASE_DIR, 'public/static/')
# prefix for static app
STATIC_URL = '/static/'
# also django-pipeline config
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'pipeline.finders.PipelineFinder',
)
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE = {
'PIPELINE_ENABLED': True,
'COMPILERS': (
'pipeline.compilers.stylus.StylusCompiler',
),
'STYLESHEETS': {
'app': {
'source_filenames': (
'css/app.styl',
),
'output_filename': 'css/app.css',
},
},
}
在我的模板,我指定的CSS-組:
{% load pipeline %}
{% stylesheet 'app' %}
</head>
結果,產生這樣的HTML:
<link href="/static/css/app.css" rel="stylesheet" type="text/css" />
</head>
但/static/css/app.css
收益404
如果我運行collectstatic
,public/static/css/app.css
已建成。但正如我理解Django邏輯,它只用於基於apache/nginx的生產服務,而不是在dev之一。在dev模式靜態是通過內部Django服務器與一些中間件django管道掛鉤服務。
我在做什麼錯了?任何幫助表示讚賞,謝謝。
UPD:我添加+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
全球urlpatterns的,但是無法理解就是爲什麼它的建議 - STATIC_ROOT僅用於生產與外部代理服務器,而不是與Django的本身。或不?
如果我設置''PIPELINE_ENABLED':False,'Django每次在開發模式下打開HTTP請求時都會自動收集靜態數據。可以嗎? – f1nn