问答

Django 中MEDIA_URL、MEDIA_ROOT 等都设置正确,输入正确的URL

作者:admin 2021-08-21 我要评论

问题描述 Django 中MEDIA_URL、MEDIA_ROOT 等都设置正确,输入正确的URL 图片不显示? 相关代码配置 # settings 配置TEMPLATES = [ { 'BACKEND': 'django.templa...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

问题描述

Django 中MEDIA_URL、MEDIA_ROOT 等都设置正确,输入正确的URL 图片不显示?

相关代码配置

# settings 配置
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',
            ],
        },
    },
]

MEDIA_ROOT = os.path.join(BASE_DIR,'media').replace('\\','/')
MEDIA_URL = '/media/'
# urls 配置
from django.conf import settings
from django.conf.urls.static import static
from django.views.static import serve

urlpatterns = [
    url(r'admin/', admin.site.urls),
    url(r'^admin.*$', views.admin),

    url(r'^.*$', TemplateView.as_view(template_name="index.html")),
    re_path(r'^media/(?P<path>.*)$',serve,{'document_root':settings.MEDIA_ROOT}),

] + static(settings.MEDIA_URL,document_root= settings.MEDIA_ROOT)

结果

返回的url 为 http://127.0.0.1:8000/media/userpro/zj.png,但是图片不显示

尝试将

url(r'^.*$', TemplateView.as_view(template_name="index.html")),

注释掉都,图片正常显示了,这是什么原因啊???

已经找到问题所在,并解决

Django 的url解析顺序为urlpatterns的由上至下的顺序

url(r'^.*$', TemplateView.as_view(template_name="index.html")),

写在前面,会把路由

re_path(r'^media/(?P<path>.*)$',serve,{'document_root':settings.MEDIA_ROOT},name='media'),

屏蔽掉,致使图片无法显示

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 使用箭头函数return数据不能实现

    使用箭头函数return数据不能实现

  • 个人小程序号能接入小程序3D地图吗?

    个人小程序号能接入小程序3D地图吗?

  • vue 移动端项目中,使用了better-scrol

    vue 移动端项目中,使用了better-scrol

  • css如何做出区域平均划分为四列

    css如何做出区域平均划分为四列

腾讯云代理商
海外云服务器