Django资源文件配置

资源文件配置

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

  • 静态资源: 指的是网站中不会改变的文件。在一般的应用程序中,静态资源包括CSS文件、Javascript文件以及图片等资源文件。
  • 媒体资源: 对于一些经常变动的资源,通常将其放在媒体资源文件夹,如用户头像、歌曲文件等。

静态资源和媒体资源可以同时存在,两者可以独立运行,互不影响。

1.1、静态资源

1.1.1 资源路由—STATIC_URL

Django的默认配置信息如下:
在这里插入图片描述上述配置是设置静态文件的路由地址,其作用是通过浏览器访问Django的静态资源。默认情况下,Django只能识别项目应用App的static文件夹里面的静态资源。当项目启动时,Django会从项目应用App里面查找相关的资源文件,查找功能主要由App列表INSTALL_APPS的staticfiles实现。在index(应用名称)中手动创建static文件夹并在文件夹中放入静态文件。
Django在调试模式(DEBUG=True)下只能识别项目应用App的static文件夹里面的静态资源,如果该文件夹改为其他名字,Django就无法识别,若static文件夹放在MyDjango的项目目录下,则Django也是无法识别的。也就是说,资源路由STATIC_URL的值为/static/,则浏览器访问静态资源的网站必须为static,否则无法访问,并且Django在调试模式(DEBUG=True)下只能识别App目录下的static文件夹。

1.1.2 资源集合—STATICFILES_DIRS

存在感: 解决STATIC_URL的不足。由于STATIC_URL的特殊性,在开发中会造成诸多不便,比如将静态文件夹存放在项目的根目录以及定义多个静态文件夹等。
在配置文件settings.py中手动设置STATICFILES_DIRS属性。该属性以列列表形式表示,设置方式如下:

STATICFILES_DIRS = [
# 设置根目录的静态资源文件夹static
os.path.join(BASE_DIR,'static'),
#设置App(index)的静态资源文件夹MyStatic
os.path.join(BASE_DIR,'index/Mystatic'),
]

此时项目中App应用(index)文件下的MyStatic和static以及项目根目录下的static文件夹都可以存放静态资源。浏览器访问的时候,图片路径(静态资源)皆为http://127.0.0.1:8000/static/xxx.jpg。若将STATIC_URL的值改为AllStatic,再次重启项目,则在浏览器上图片资源路径的static则改为Allstatic。

1.1.3 资源部署—STATIC_ROOT

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

STATIC_ROOT = os.path.join(BASE_DIR,'AllStatic')

当项目的配置属性DEBUG设为True的时候,Django会自动提供静态文件代理服务,此时整个项目处于开发阶段,因此无需使用STATIC_ROOT。当配置属性DEBUG设为False的时候,意味着项目进入生产环境,Django不再提供静态文件代理服务,此时需要在项目的配置文件中设置STATIC_ROOT。
设置STATIC_ROOT需要使用Django操作指令collectstatic来收集所有静态资源,这些静态资源都会保存STATIC_ROOT所设置的文件夹里。

1.2、媒体资源

在项目的根目录下手动创建media文件夹。

1.2.1、资源路由—MEDIA_URL
# 设置媒体路由地址信息
MEDIA_URL = '/media/'
1.2.2、获取media文件夹在路径信息—MEDIA_ROOT
# 获取media文件夹的完整路径信息
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

配置属性设置后,还需要将media文件夹注册到Django里,让Django知道如何找到媒体文件,否则无法在浏览器上访问该文件夹的文件信息。此时需要打开MyDjango文件夹的urls.py文件,为媒体文件夹media添加相应的路由地址,代码如下:

from django.contrib import admin
from django.urls import path,re_path
# 导入项目应用index
from index.views import index

# 配置媒体文件夹media
from django.views.static import serve
from django.conf import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',index),
    # 配置媒体文件的路由地址
    re_path('media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT},name = 'media'),
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值