阅读:54
**
**
django在开发环境下可以加载静态文件,部署到服务器无法加载静态文件
无论我怎么修改配置,都一样找不到静态文件
各种求助依然无法解决
有大神给我的回答是部署阶段的套路就完全不同了,最主要的区别是debug=False
此时 Django 就不再管理静态文件了,哪怕你配置了路由也不行。这是因为静态文件由 Django 来管理的效率实在是太低了,应该交由更高效的网络服务管理起来,如 Nginx 等。即所有静态文件的请求都由 Nginx 直接处理,完全不经过 Django 了,所以此时不管你怎么折腾 Django 的配置都是没用的了。
官方文档,关于django管理静态文件
既然要配置nginx
, 我用的是宝塔,管理起来很方便,
在此之前,我们先要解决内部矛盾
在settings
配置文件添加上这一行
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
再进虚拟环境
python manage.py collectstatic
把所有静态文件收集到collected_static
,方便nginx
管理,
会自动创建这个目录,它下面会有一个admin
文件夹,包含了js,css img
添加上这一段
如果有用户上传媒体文件的话也是同理,在第一步添加media
,第二部也是
location /static {
alias /python/apitest/collected_static;
}
此处一定要写项目所在路径
项目重启一下,就发现可以访问了
<!DOCTYPE html>
{% load static %}
<html>
<head>
<meta charset="utf-8"/>
<title>接口</title>
{# <script src="{% static 'jquery-3.6.0.min.js' %}"></script>#}
<script src="/static/jquery-3.6.0.min.js"></script>
<style>
*{
margin: 0;
padding: 0;
}
.g{
color:goldenrod ;
text-align: center;
font-size: 28em;
width: 100%;
background-color: blueviolet;
}
</style>
</head>
<body>
<div style="width: 100%;"></div>
<script>
var hight = $(window).height()
size = ""+ hight+ "px"
$('div').css({'height':size, 'background-color': 'blue'}).addClass('g').text('value')
console.log(hight)
</script>
</body>
</html>