Django的静态资源部署

Django静态文件的部署



因为django项目与PHP项目不同,不存在熟悉的网页根目录,所以静态资源文件如css,js文件不能直接放在网址对应的目录中就能读取到(现在PHP框架基本也不用这种方式)。在Django文件中部署静态资源可以分为两步。

开发环境中的静态文件



当我们在开发环境中时, 使用 manage.pyrunserver命令时,Django会自动读取在应用目录下的static文件夹中的静态文件(这个可以同过修改设置更改,一般不需要)。如下图的目录结构,static_image
我们在模板中添加代码

{% load static %}
<link rel="stylesheet" href="{% static 'style.css' %}">
<h1>Test Page</h1>

Django就会自动寻找对应的静态文件。 但是在生产环境中,runserver不够稳定。需要Nginx、Uwsgi来部署项目时,网页就会找不到对应的静态资源。

python mamage.py collectstatic



从字面意思就可以看出来,这条命令的作用就是收集静态文件。与之对应的时settings.py文件中STATIC_ROOT的值。运行collectistatic命令以后,Django会自动收集应用中的静态文件,然后放入STATIC_ROOT所设置的目录中,省去自己一个个整理的麻烦。接下来就需要使用配置Nginx来完成静态资源的部署

配置Nginx



settings.py中还有另外一个参数STATIC_URL,默认为/static/,即静态文件的url为http://yousite.com/static/加上目录。所以我们配置Nginx让这个url地址指向上一步中STATIC_ROOT的值。

location /static/{
	alias     /your/STATIC_ROOT/path/
}

注意目录最后要加上/,我自己没加的时候会出现404,找不到静态文件。

配置完以后静态资源就可以正常加载了