Django上静态STATIC_URL和STATIC_ROOT的区别
我被弄糊涂了static root
,想澄清一下。
要在Django中提供静态文件,以下代码应位于settings.py
和中urls.py
:
import osPROJECT_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_urlpatternsurlpatterns += 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
会将所有静态文件(即,应用程序中的静态文件夹中的所有路径中的静态文件)复制到该目录/var/www/example.com/static/
。现在你只需要在apache或nginx..etc上提供此目录。
STATIC_URL
在URL其中的静态文件STATIC_ROOT目录供应(由Apache或nginx..etc)。 示例:/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'
)
现在,在你的django模板中,可以通过以下方式引用它:
{% load static %}<script src="{% static "jquery.js" %}"></script>
它将呈现:
<script src="http://static.example.com/jquery.js"></script>
以上是 Django上静态STATIC_URL和STATIC_ROOT的区别 的全部内容, 来源链接: utcz.com/qa/423550.html