这个时候static标签就非常有用了;当然你也可以在uwsgi的配置中通过--check-static和--static
转:https://blog.csdn.net/weixin_36296538/article/details/83153070
前言我比来在琢磨django框架的使用,在上传小我私家网站处事器上时,再次遇到了找不到静态文件,css、img等样式全无的问题。于是沉下心来,好好研究了django的静态文件到底应该怎么去部署(deploy),一点心得体会现分享于下。
1. python manage.py collectstatic做了什么Collects the static files into STATIC_ROOT.翻译:把静态文件收集到 STATIC_ROOT中。
以上是官方文档中的简述。
固然你必定会问,从哪里收集这些静态文件呢?
在回答这个问题前,我们先看一眼本身项目中的setting.py文件:
STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static/"),]STATIC_URL = ‘/static/‘STATIC_ROOT = os.path.join(BASE_DIR, "static_new/")#此中STATIC_ROOT和STATICFILES_DIRS默认为None,#即未设置,我是本身配置成这样子的1234567python manage.py collectstatic在执行时,django默认会去检察界说在STATICFILES_DIRS里的目录,以及在INSTALLED_APPS里界说了的app的static目录。如果这些目录下有文件,则把文件全部收集起来,拷贝到STATIC_ROOT目录下。[18.10.19二次编纂:当使用django的runserver时,如果请求的是一个静态文件,django也是会默认检察上述的ROOT、DIRS和static目录。但是,在部署随处事器上时,此法则就不使用了。]
这样说可能有点难懂,下面给出一个示例:
首先,以下是我的项目树形图,多余文件在此已被省略。
BASE_DIR├── manage.py├── polls│ ├── static│ │ ├── mystie_polls_static.txt├── static│ └── mysite_static.txt1234567注意:polls是我项目里的一个app!且已经添加到了INSTALLED_APPS中!
可以看到,我的项目下有static/mysite_static.txt以及polls/static/mystie_polls_static.txt,前者目录已经被写在STATICFILES_DIRS中,后者的目录是app下的static目录,均切合静态文件的查找法则。
不难预想到,在执行collectstatic后,mystie_polls_static.txt和mysite_static.txt文件城市被收集到STATIC_ROOT中。
#在项目目录下执行python manage.py collectstatic12最终项目文件布局的树状图如下:
├── manage.py├── polls│ ├── static│ │ ├── mystie_polls_static.txt├── static│ └── mysite_static.txt├── static_new│ ├── *admin│ ├── mysite_static.txt│ └── mystie_polls_static.txt#此中,,admin是django自带的后台打点的静态文件1234567891011不出所料哈哈,django公然便利呀!我们以后很轻松就能把静态文件都收集到一起啦!
2. STATIC_URL的感化URL to use when referring to static files located in STATIC_ROOT.Example: “/static/” or “”翻译:STATIC_URL用于引用STATIC_ROOT所指向的静态文件。
举个栗子,在python manage.py runserver后,我能够以:8000/static/mystie_polls_static.txt为路径,访谒到STATIC_ROOT下的静态文件。
但是,如果你使用了nginx(或其他)处事器后,该法则就无效了。处事器会接管URL匹配法则,你需要在nginx处事器的配置文件中界说/static的alias。
别的,STATIC_URL还有一个感化,如下:
假定你的设置文件中有
STATIC_URL = ‘/static/‘1那么,在templates中,你可以通过模板标签static和给定的相对路径来组成一个URL,如下。
{% load static %}<img src="{% static "my_app/example.jpg" %}" alt="My image">12此时,组成的URL为my_app/static/my_app/example.jpg。
如果你在项目顶用到了static这个模板标签,那必然要将nginx(或其他)处事器的/static配置到与STATIC_ROOT一致!依我鄙意,这样做是有好处的。因为django不像php,只要将静态文件安排在.php或者.html同一目录下就好。好比:<link type="text/css" href="http://www.mamicode.com/static/css/main.css">,在django中挪进一个文件夹中就可能访谒不到了。这个时候static标签就非常有用了;固然你也可以在uwsgi的配置中通过--check-static和--static-map mountpoint=path来解决这个问题。官方链接在此:https://uwsgi-docs.readthedocs.io/en/latest/StaticFiles.html————————————————版权声明:本文为CSDN博主「嘿嘿的客人」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文来由链接及本声明。原文链接:https://blog.csdn.net/weixin_36296538/article/details/83153070
详解django中的collectstatic命令以及STATIC_URL、STATIC_ROOT配置
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/30376.html