django静态静态url静态根

我被static root困惑,想澄清事情。

要在Django中提供静态文件,请在settings.pyurls.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

问题:

  1. 任何人都可以请解释我的工作stream程:理想的情况下应该怎么做。 截至目前,我复制/粘贴上述代码片段到他们指定的位置,并继续在静态目录中创build新文件,它的工作原理。 在我的settings.STATIC_ROOT ,但是,我指出了一个不同的目录。

  2. 如果有人能够解释每个环境的工作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 /'通常很好,它只是静态文件的前缀。