Django项目部署到服务器无法加载静态文件

     阅读:23

**

详情见我的博客小生博客

**

django在开发环境下可以加载静态文件,部署到服务器无法加载静态文件
在这里插入图片描述
无论我怎么修改配置,都一样找不到静态文件

各种求助依然无法解决
有大神给我的回答是部署阶段的套路就完全不同了,最主要的区别是debug=False此时 Django 就不再管理静态文件了,哪怕你配置了路由也不行。这是因为静态文件由 Django 来管理的效率实在是太低了,应该交由更高效的网络服务管理起来,如 Nginx 等。即所有静态文件的请求都由 Nginx 直接处理,完全不经过 Django 了,所以此时不管你怎么折腾 Django 的配置都是没用的了。
在这里插入图片描述
官方文档,关于django管理静态文件

1.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

2.nginx配置

在这里插入图片描述
添加上这一段
如果有用户上传媒体文件的话也是同理,在第一步添加media,第二部也是

location /static {
    alias /python/apitest/collected_static;
    }

在这里插入图片描述
此处一定要写项目所在路径
项目重启一下,就发现可以访问了
在这里插入图片描述

html测试

<!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>