Django资源文件配置

资源文件配置分为静态资源和媒体资源。静态资源的配置方式由配置属性STATIC_URL、STATICFILES_DIRS和STATIC_ROOT进行设置;媒体资源的配置方式由配置属性MEDIA_URL和MEDIA_ROOT决定。

  • 资源路由——STATIC_URL

静态资源指的是网站中不会改变的文件。在一般的应用程序中,静态资源包括CSS文件、JavaScript文件以及图片等资源文件。

CSS是一种用来表现HTML或XML等文件样式的文件。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各种元素进行格式化。

JavaScript是一种直译式脚本语言。(具体关于JavaScript的介绍,请自行学习相关内容)

一个项目在开发过程中肯定会用到CSS和JavaScript文件,这些静态文件的存放主要由配置文件settings.py设置,Django默认配置信息如下:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/

STATIC_URL = '/static/'

上述配置是设置静态资源的路由地址,作用是通过浏览器访问Django的静态资源。默认情况下,Django只能识别项目应用App的static文件夹里面的静态资源。每当项目启动时,Django会从项目应用App里面查找相关的资源文件,查找是由上一节说的App列表INSTALLED_APPS的staticfiles实现,在standard中创建static文件夹,并放置图片pp.png,如下图:

Django在调试模式(DEBUG=True)时能识别项目应用App的static文件夹里面的静态资源,如果该文件夹改为其他名字,Django将无法识别,若将static文件夹放在django_standard的项目目录下,则Django也无法识别:

静态文件的访问路径为:

http://127.0.0.1:8000/static/pp.png

若更改了STATIC_URL的值,那相应的配置都需要修改。

  • 资源集合——STATICFILES_DIRS

由于STATIC_URL的特殊性,在开发中会遇到各种不适应,比如将静态文件夹存放在项目的根目录以及定义多个静态文件夹等问题。以该项目为例,pp.png能够正常访问,

若想在网页上正常访问图片jh.png和rr.png,可以将根目录的static文件夹和standard的mystatic文件夹写入资源集合STATICFILES_DIRS中。如下图所示,

在配置文件settings.py中设置STATICFILES_DIRS属性,该属性以列表的形式表示,设置方式如下:

STATICFILES_DIRS = [
    #设置根目录的静态资源文件夹static
    BASE_DIR / 'static',
    #设置App(standard)的静态资源文件夹mystatic
    BASE_DIR / 'standard/mystatic',
]

设置后再次启动,三种图片都可以正常访问了:

浏览器在访问图片的时候,图片路劲都一样,图片路径的static是指资源路径STATIC_URL的值,若将STATIC_URL设置为wjpstatic,则访问图片的路径就要从static->wjpstatic:

  • 资源部署——STATIC_ROOT

静态资源配置还有一个STATIC_ROOT,其作用是在服务器上部署项目,实现服务器和项目之间的映射。STATIC_ROOT主要收集整个项目的静态资源并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系。STATIC_ROOT配置如下:

STATIC_ROOT = BASE_DIR / 'wjpstatic'

当项目的配置属性DEBUG为True时,Django会自动提供静态文件代理服务,此时整个项目处于开发阶段,因此无须使用STATIC_ROOT。当配置属性DEBUG设置为False的时候(发布生产以后),意味着项目进入生产环境,Django不再提供静态文件代理服务,此时需要在项目的配置文件中设置STATIC_ROOT。

设置STATIC_ROOT后,需要使用Django操作指令collectstatic来收集所有静态资源,这些静态资源都会保存在STATIC_ROOT所设置的文件夹里。Admin的开发需要对静态文件设置较多,关于STATIC_ROOT的深入讲解后续进行。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值