快速解决Django关闭Debug模式无法加载media图片与static静态文件

 更新时间:2020年04月07日 09:12:45   作者:一米阳光给的温暖  
这篇文章主要介绍了快速解决Django关闭Debug模式无法加载media图片与static静态文件的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

开发时,通常打开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目录下。

以上这篇快速解决Django关闭Debug模式无法加载media图片与static静态文件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python使用pip安装报错:is not a supported wheel on this platform的解决方法

    Python使用pip安装报错:is not a supported wheel on this platform的解决

    这篇文章主要介绍了Python使用pip安装报错:is not a supported wheel on this platform的解决方法,结合实例形式分析了在安装版本正确的情况下pip安装报错的原因与相应的解决方法,需要的朋友可以参考下
    2018-01-01
  • Python实现端口复用实例代码

    Python实现端口复用实例代码

    这篇文章主要介绍了Python实现端口复用实例代码,需要的朋友可以参考下
    2014-07-07
  • Python 多处理模块如何使用示例详解

    Python 多处理模块如何使用示例详解

    这篇文章主要为大家介绍了Python 多处理模块如何使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • PHP函数__autoload失效原因及解决方法

    PHP函数__autoload失效原因及解决方法

    在本篇文章里小编给大家整理的是一篇关于PHP函数__autoload失效原因及解决方法,有兴趣的朋友们可以学习下。
    2021-09-09
  • BatchNorm2d原理、作用及pytorch中BatchNorm2d函数的参数使用

    BatchNorm2d原理、作用及pytorch中BatchNorm2d函数的参数使用

    这篇文章主要介绍了BatchNorm2d原理、作用及pytorch中BatchNorm2d函数的参数使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Django静态资源部署404问题解决方案

    Django静态资源部署404问题解决方案

    这篇文章主要介绍了Django静态资源部署404问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python可以用来做什么

    Python可以用来做什么

    在本篇文章里小编给大家整理的是一篇关于解惑Python可以用来做什么的基础文章,有兴趣的朋友们可以学习下。
    2020-11-11
  • Python实现FIFO缓存置换算法

    Python实现FIFO缓存置换算法

    这篇文章主要为大家详细介绍了Python实现FIFO(先进先出)缓存置换算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Python中字典的缓存池

    Python中字典的缓存池

    这篇文章主要介绍了Python中字典的缓存池,字典的缓存池采用数组实现的,并且容量也是80个,下文详细介绍需要的小伙伴可以参考一下
    2022-05-05
  • 利用Python微信群发英语每日一句

    利用Python微信群发英语每日一句

    这篇文章主要为大家详细介绍了Python如何利用wxauto实现微信群发消息,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11

最新评论