Django的 /static/js/jquery-1.12.4.min.js HTTP/1.1“ 404的报错,解决和理解,及调用静态文件配置

版本Django3.1
首先你新建的static目录必须是在项目根目录下。如果是在其他目录就会报错。
在这里插入图片描述
然后讲配置。
首先,我们配置静态文件,要在setting.py里面加入如下几行代码:
settings.py


STATIC_URL = '/static/'
# BASE_DIR 是项目的绝对地址
STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')
#以下不是必须的,但是你不配置调试也是会出错的
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'common_static'),
) 

STATIC_ROOT是Django 1.3新增的特性,该目录下面的文件会被当成静态文件进行处理。与STATIC_ROOT搭配使用的还有STATIC_URL,一般默认用/static/,用于指定静态目录的URL。其实STATIC_ROOT是用来方便部署Django App的。我们在写Django App的时候,经常会有一些和该App 相关的静态文件,虽然我认为的最佳实践方式是将静态文件放在统一的目录,但是毕竟Django是支持这种操作的,所以在1.3版本以前,部署的时候就比较麻烦了。我们不做阐述,只说新版本,在线上就把STATIC_ROOT替换成STATICFILES_DIRS就行了,要知其所以然,请看如下:

STATICFILES_DIRS
从名字可以看出STATICFILES_DIRS指定了一个工程里面哪个目录存放了与这个工程相关的静态文件,这是一个列表。上面的collectstatic命令也会将该列表下面的静态文件收集到STATIC_ROOT目录下面去的,所以STATICFILES_DIRS下面是不能包含STATIC_ROOT这个路径的。

在开发阶段,Django把/static 映射到django.contrib.staticfiles这个App。staticfiles自动地从STATICFILES_DIRS目录里面搜索静态文件。一旦布署到开发环境上,STATIC_ROOT 是在部署的时候才发挥作用,所有的静态文件都会在STATIC_ROOT里面

可以理解为调试用common_static,部署用collect_static,当然名字你随意取都行。

在HTML中如下配置就能调用静态文件
在这里插入图片描述
在这里插入图片描述

.STATIC_URL

那么到此为止,静态文件的机制就可以运作了,但是有一个问题,我能不能通过url直接访问我在项目中的静态文件呢,答案肯定是啦,但是,注意,你是在浏览器是访问,你不可能输入你的静态文件的本地绝对地址吧,比如我的一种图片的本地地址为 D:mysite/common_static/images/2.png
那么别人不可能在浏览器上直接输入:
http://127.0.0.1:8000/mysite/common_static/images/2.png
这样子,浏览器会报错, 没有该页面
那么django是如何让浏览器也可以访问服务器上的静态文件呢,前面已经说了,直接访问服务器本地的地址是不行的,那就需要一个映射,django利用STATIC_URL来让浏览器可以直接访问静态文件,比如:

STATIC_URL = ‘/static/’

那么可以在浏览器上输入:
http://127.0.0.1:8000/static/images/2.png
那么就相当与访问/mysite/common_static/images/2.png

STATIC_URL = ‘/static/’ 就表示了STATICFILES_DIRS = ( os.path.join(BASE_DIR, ‘common_static’),) 中的common_static目录。
在这里插入图片描述
有文章说url中要配置,
设置urls文件
在末端添加两句话
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
但是我没有配置也是可以正常运行的。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值