我对 static root
感到困惑,想澄清一下。
要在 Django 中提供静态文件,以下内容应位于 settings.py
和 urls.py
中:
import os
PROJECT_DIR=os.path.dirname(__file__)
1. 应该收集静态文件的目录的绝对路径
STATIC_ROOT= os.path.join(PROJECT_DIR,'static_media/')
2.静态文件的URL前缀
STATIC_URL = '/static/'
3. 静态文件的附加位置
STATICFILES_DIRS = ( os.path.join(PROJECT_DIR,'static/'),)
…并在 urls.py
以下几行:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += patterns('', (
r'^static/(?P<path>.*)$',
'django.views.static.serve',
{'document_root': settings.STATIC_ROOT}
))
4.我们还使用 python manage.py collectstatic
问题:
任何人都可以向我解释工作流程:理想情况下应该如何完成。到目前为止,我将上面的代码片段复制/粘贴到它们的指定位置,并继续在静态目录中创建新文件并且它可以工作。但是,在我的
settings.STATIC_ROOT
中,我指向了另一个目录。如果有人可以解释每个设置的工作流程,那就太好了:如何收集和管理文件,以及应遵循的良好做法。
谢谢。
原文由 user993563 发布,翻译遵循 CC BY-SA 4.0 许可协议
静态根目录
现在命令
./manage.py collectstatic
将所有静态文件(即在应用程序中的静态文件夹中,所有路径中的静态文件)复制到目录/var/www/example.com/static/
。现在你只需要在 apache 或 nginx 等上提供这个目录。STATIC_URL
If you set
STATIC_URL = 'http://static.example.com/'
, then you must serve theSTATIC_ROOT
folder (ie"/var/www/example.com/static/"
) by apache or nginx at url'http://static.example.com/'
(so that您可以参考静态文件'/var/www/example.com/static/jquery.js'
和'http://static.example.com/jquery.js'
)现在在你的 django 模板中,你可以通过以下方式引用它:
这将呈现: