快速解决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

标签:Django,Debug,media,static
0
投稿

猜你喜欢

  • opencv实现矿石图片检测矿石数量

    2021-08-26 02:17:39
  • 使用Python将xmind脑图转成excel用例的实现代码(一)

    2021-11-10 12:35:42
  • 在Python中字典根据多项规则排序的方法

    2023-09-12 00:51:38
  • PHP基于phpqrcode类生成二维码的方法示例详解

    2023-07-15 22:57:52
  • PYQT5开启多个线程和窗口,多线程与多窗口的交互实例

    2023-07-19 04:21:21
  • Python3.5装饰器典型案例分析

    2023-03-05 20:32:35
  • 王孟友教你如何设计标志(LOGO)

    2008-04-17 13:30:00
  • 自适应线性神经网络Adaline的python实现详解

    2023-11-03 03:57:40
  • Python连接phoenix的方法示例

    2023-05-24 06:25:19
  • sql字段解析器的实现示例

    2024-01-16 13:36:53
  • 详解pandas删除缺失数据(pd.dropna()方法)

    2021-03-26 04:36:33
  • 深入浅出SQL之左连接、右连接和全连接

    2009-08-30 15:14:00
  • Mysql存储过程和函数区别介绍

    2024-01-25 00:40:35
  • JavaScript中数组的合并以及排序实现示例

    2024-05-08 10:10:01
  • 深度学习TextRNN的tensorflow1.14实现示例

    2023-12-31 18:59:23
  • 浅述python中深浅拷贝原理

    2022-03-05 06:29:36
  • 使用Python+Appuim 清理微信的方法

    2021-05-24 12:22:05
  • 浅谈Python的条件判断语句if/else语句

    2021-03-06 12:11:02
  • python编程使用协程并发的优缺点

    2023-07-20 12:11:45
  • Python实现http接口自动化测试的示例代码

    2023-05-01 07:14:45
  • asp之家 网络编程 m.aspxhome.com