我被弄糊涂了static root,想澄清一下。
static root
要在Django中提供静态文件,以下代码应位于settings.py和中urls.py:
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但是,在我的文章中,我指向了另一个目录。
如果有人可以解释每种设置的工作流程,那就太好了:文件的收集和管理方式以及遵循的最佳做法是什么。
谢谢。
STATIC_ROOT
./manage.py collectstatic将收集静态文件以进行部署的目录的绝对路径。 例:STATIC_ROOT="/var/www/example.com/static/"
./manage.py collectstatic
STATIC_ROOT="/var/www/example.com/static/"
现在,该命令./manage.py collectstatic会将所有静态文件(即,应用程序中的静态文件夹中的所有路径中的静态文件)复制到该目录/var/www/example.com/static/。现在你只需要在apache或nginx..etc上提供此目录。
/var/www/example.com/static/
STATIC_URL
在URL其中的静态文件STATIC_ROOT目录供应(由Apache或nginx..etc)。 示例:/static/或http://static.example.com/
/static/
http://static.example.com/
如果设置了STATIC_URL = 'http://static.example.com/’,那么你就必须服务于STATIC_ROOT文件夹(即"/var/www/example.com/static/"通过在URL Apache或nginx的), 'http://static.example.com/’(这样你可以参考静态文件'/var/www/example.com/static/jquery.js'用'http://static.example.com/jquery.js')
"/var/www/example.com/static/"
'/var/www/example.com/static/jquery.js'
'http://static.example.com/jquery.js'
现在,在你的django模板中,可以通过以下方式引用它:
{% load static %} <script src="{% static "jquery.js" %}"></script>
它将呈现:
<script src="http://static.example.com/jquery.js"></script>