Django实现media、static静态资源通过url加载访问

Django实现media、static静态资源通过url加载访问

Django项目中一般上传的静态文件会存储在根目录的media文件夹下,template模板使用的静态css、js、image等文件存在static目录下,所以如何配置mediastatic目录的静态访问?

官方文档:https://docs.djangoproject.com/en/4.0/howto/static-files/
How to manage static files (e.g. images, JavaScript, CSS)

修改setting.py配置文件

首先确认django.contrib.staticfilesINSTALLED_APPS配置项中


INSTALLED_APPS = [
    ...
    "django.contrib.staticfiles",
    ...
]

mediastatic文件夹位置需要修改setting.py配置文件,使项目指导文件夹位置在哪。具体配置如下:


STATIC_URL = "/static/"

MEDIA_ROOT = "media"  
MEDIA_URL = "/media/"  # 跟STATIC_URL类似,指定用户可以通过这个url找到文件

配置urls.py路由访问

urls.py文件中配置静态资源访问路由。


# 这是手动引用项目中的setting文件,如果是这样引用settings.STATIC_ROOT应该写成settings.STATIC_URL
# from hwblog import settings  

from django.conf import settings  # 这是自动引用Django中的setting配置
from django.conf.urls.static import static


urlpatterns = ([
    # ... the rest of your URLconf goes here ......
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
)


扩展-STATICFILES_DIRS配置

在项目中有可能静态资源存储的位置不仅在static目录下,这时可以修改setting.py文件添加STATICFILES_DIRS配置增加多个静态资源目录,Django会在list中的目录去寻找url访问的资源。

# 设置django的静态文件目录列表
# 官方文档:https://docs.djangoproject.com/en/4.0/ref/settings/#std-setting-STATICFILES_DIRS
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    "D:\static\media\cakeimages",
    ("download", "D:\static\download"),  # 通过(prefix, path) tuple形式对访问路径设置别名
]

增加配置后就可以通过http://127.0.0.1:8000/static/xxx.jpg来访问D:\static\media\cakeimages目录下的xxx.jpg资源。

别名的访问通过http://127.0.0.1:8000/static/download/meixi.jpg来访问D:\static\download目录下meixi.jpg资源。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在那路边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值