快速解决Django关闭Debug模式无法加载media图片与static静态文件
作者:一米阳光给的温暖 发布时间:2023-05-28 02:54:43
开发时,通常打开Debug模式会快速定位开发时的一些问题。
项目开始部署时,关闭Debug模式,url.py路由静态文件和图片写法:
# url.py
from django.views import static
from django.conf import settings
#路由静态文件和图片
urlpatterns = [
url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='media')
url(r'^media/(?P<path>.*)$', static.serve, {'document_root': settings.MEDIA_ROOT}, name='media')
]
补充知识:Django静态文件的获取,以及对static和media目录设置的一些思考
Django直接获取静态资源文件是不行的,会报错。
添加静态资源文件夹static,设置静态文件根目录后
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
...
]
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/
STATIC_URL = '/static/'
# 可收集静态文件到static文件夹,便于访问
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
配置完成后就可以通过下面的代码调用静态资源了。图片、css、js文件。
{% load static %}
...
...
<img class="author_img rounded-circle" src="{% static 'image/blog/author.png' %}" alt="" >
但是上传到media中的文件可以不通过这种方式调用。但是前提是也要配置media的文件根路径和根目录。
MEDIA_URL = '/media/' # 访问文件的url根路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 上传文件存储根目录
然后可以通过如下方法调用。
<img class="img-fluid" src="/media/{{ detop_view.cover_photo }} " alt="post">
可以注意到这里资源引用没有用{% static ... %},实际上只要这样子在settings.py文件中配置了相关路径和目录,就可以通过这种方式引用。
要是别的静态文件都通过这种方法引用,对于小项目这不是什么问题,你可以将静态文件放在任何你的web服务器能够找到的地方。但是对于大型项目,尤其是那些包含多个app在内的项目,处理那些由app带来的多套不同的静态文件是个麻烦活。但这正是django.contrib.staticfiles的用途:它收集每个应用(和任何你指定的地方)的静态文件到一个统一指定的地方,并且易于访问。
media目录下一般放上传的文件,在django项目部署到服务器的时候,会输入python manage.py collectstatic收集静态资源文件,所以与static目录不冲突,而且media中的文件可能还会被删除。因此后期用户上传的文件不放在static目录下。
来源:https://blog.csdn.net/qq_39670218/article/details/87886979


猜你喜欢
- map()函数map() 会根据提供的函数对指定序列做映射,是内置函数第一个参数 function 以参数序列中的每一个元素调用 funct
- 本文通过Python3+pyqt5实现了python Qt GUI 快速编程的19章的页面索引器应用程序例子。/home/yrd/eric_
- 本文实例讲述了python根据文件大小打log日志的方法,分享给大家供大家参考。具体方法如下:import glob import logg
- 组合集总计: group by with rollup/cube grouping sets 子查询按执行方式分:标准子查询、关联子查询 标
- 本文实例讲述了PHP封装CURL扩展类。分享给大家供大家参考。具体如下:<?php/*** @description: 封装CURL扩
- 如下所示: m_start =date +' 09:00' m_end =date +' 13:00'rsv
- 一 .概述SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应
- 最近在做新闻发布系统的时候,用到了二级联动,我把使用方法记录下来,以便日后查阅以及帮助新手朋友们。下面是效果图:下面来讲解一下实现的方法:1
- 这篇文章主要介绍了python 上下文管理器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友
- 获取文件目录的方法 :import os# '***获取当前目录***'os.getcwd()# '***获取上级目
- 本文以实例形式讲述了Python实现抓取网页并解析的功能。主要解析问答与百度的首页。分享给大家供大家参考之用。主要功能代码如下:#!/usr
- 推荐的国内镜像站[ 个人推荐清华大学pypi镜像站(https://mirrors.tuna.tsinghua.edu.cn/help/py
- 在Python2.x中表示八进制的方式有两种:以'0'开头和以'0o'(字母o)开头: Pyth
- 实验介绍增量恢复一般适用的场景:1、人为的sql语句破坏了数据库2、在进行下一次完全备份之前发生系统故障导致数据库数据丢失3、在主从架构中,
- 最近一周每天早上起来第一件事,就是打开新闻软件看疫情相关的新闻。了解下自己和亲友所在城市的确诊人数,但纯数字还是缺乏一个直观的概念。那我们来
- 初学者可能都会遇到一个小问题就是:在用IPython的时候,可以使用类似%matplotlib inline的Magic Function(
- PyCharm 是一款功能强大的 Python 编辑器,具有跨平台性,鉴于目前最新版 PyCharm 使用教程较少,为了节约时间,来介绍下p
- 要达到二级名的效果,必须一下条件以及流程:1、必须有一个顶级域名,而且此域名必须做好泛解析并做好指向。2、必须有一台属于你的独立的服务器。泛
- 一、 下载MySQLMysql官网下载地址:MySQL :: Download MySQL Installer (Archived Vers
- AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用