211. django中的static 静态文件配置

0.问题产生原因

我们项目在后台生成了pdf报告,和png图片, 组长想给pdf报价一个预览功能. 一开始想了很多办法没成功, 搜索时看到有人使用django 静态目录.

1. 首先了解静态文件

比如图片, css, js, pdf等文件(音频文件不包括他属于django的另一个类型media类型), 当前端请求时将这些文件展示给用户看.

2. 主要的几个配置

# 静态文件路径, 也就是你要访问一个静态文件 a.png, 那么你需要加上static/a.png
STATIC_URL = '/static/'
# 静态文件目录, 只有当执行python manage.py collectstatic 时, django会将所有App下面的静态文件搜集到STATIC_ROOT中,
# 生产环境时你只需要将静态文件配置执行这里就可以了(也就是说STATIC_ROOT可以不叫做static, 他可以是任意一个名字, 只不过默认大家这么写而已)
STATIC_ROOT = BASE_DIR.joinpath("static")
# 指向一个我们需要的路径, django会先遍历STATICFILES_DIRS, 找不到才会去所有app下面去遍历, 不过一般我们会将STATICFILES_DIRS 和STATIC_ROOT 配置一样
STATICFILES_DIRS = []

3. 使用

测试环境:
STATIC_URL = '/static/'  # 你只需要配置他就可以是你的项目访问到你app下面的static目录中的静态文件(STATIC_URL这是请求静态文件的前缀, 可以随便改, 默认叫做static)

生产环境:
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR.joinpath("static")  # 需要额外执行一个python manage.py collectstatic将所有app下面的static目录中的静态文件, 全部按照对应目录拷贝到STATIC_ROOT 对应的路径, 这个过程是自动的
STATICFILES_DIRS = ()  # 如果你还有不是放在app, 以及STATIC_ROOT路径下的可以通过它指定

比如: STATIC_ROOT 下面有一个images/1.jps 你在html中如何配置才能显示呢
http://xxxxx/static/images/1.jps  即可

4. nginx配置

上面配置完成之后还是不能使用, 原来还需要配合nginx的路由使用真麻烦
location /static/ {
    alias /home/NetCTP/InfosecAgile/static/;
    index index.html index.htm;
}

5. nginx配置2(把django中的static配置全部注释掉)

直接使用nginx配置不配置django中的静态配置, 我直接给报告换了个目录, 只在nginx上面配置好访问文件的路径就可以了.(但是如果你要是用django模板中引用static_url还是建议使用django的静态目录配置)
location /libs/report/ {
    alias /home/NetCTP/InfosecAgile/libs/report/;
    index index.html index.htm;
}

参考:

  1. https://www.yisu.com/zixun/178048.html
  2. https://segmentfault.com/a/1190000000358284
  3. https://www.cnblogs.com/starof/p/4682812.html
posted @ 2021-12-08 13:56  楠海  阅读(384)  评论(0编辑  收藏  举报