django静态静态url静态根
我被static root
困惑,想澄清事情。
要在Django中提供静态文件,请在settings.py
和urls.py
:
import os PROJECT_DIR=os.path.dirname(__file__)
1.应该收集静态文件的目录的绝对path
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} ))
我们也使用python manage.py collectstatic
问题:
-
任何人都可以请解释我的工作stream程:理想的情况下应该怎么做。 截至目前,我复制/粘贴上述代码片段到他们指定的位置,并继续在静态目录中创build新文件,它的工作原理。 在我的
settings.STATIC_ROOT
,但是,我指出了一个不同的目录。 -
如果有人能够解释每个环境的工作stream程:如何收集和pipe理文件,以及遵循什么是一个好的做法,这将是非常好的。
谢谢。
STATIC_ROOT
./manage.py collectstatic
所在目录的绝对path将收集用于部署的静态文件。 例如:STATIC_ROOT="/var/www/example.com/static/"
现在命令./manage.py collectstatic
将复制所有静态文件(即在应用程序的静态文件夹,所有path中的静态文件)到目录/var/www/example.com/static/
。 现在你只需要在apache或nginx..etc上提供这个目录。
STATIC_URL
STATIC_ROOT
目录中的静态文件所在的URL
(由Apache或nginx..etc提供)。 例如:/static/
或http://static.example.com/
如果你设置了STATIC_URL = 'http://static.example.com/'
,那么你必须通过apache或者nginx服务于STATIC_ROOT
文件夹(即"/var/www/example.com/static/"
) 'http://static.example.com/'
(以便您可以将静态文件'/var/www/example.com/static/jquery.js'
与'http://static.example.com/jquery.js'
)
现在在你的Django模板中,你可以通过以下方式引用它:
{% load staticfiles %} <script src="{% static "jquery.js" %}"></script>
这将呈现:
<script src="http://static.example.com/jquery.js"></script>
STATICFILES_DIRS
:您可以保留项目的静态文件,例如您的模板使用的静态文件。
STATIC_ROOT
:保持空,当你做manage.py collectstatic
,它会search你的系统上的所有静态文件,并将其移动到这里。 你的静态文件服务器应该映射到这个文件夹,无论它在哪里。 在运行collectstatic之后检查它,你会发现django构build的目录结构。
STATIC_URL
:'/ static /'通常很好,它只是静态文件的前缀。