saptechnique

Better late than never. - 郭富

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  319 随笔 :: 18 文章 :: 425 评论 :: 104万 阅读

如果在url中没有配置media,即使在settings设置了MEDIA_ROOT,也无法正常显示图片。

会遇到如下错误

1
2
3
4
5
6
Using the URLconf defined in me_blog.urls, Django tried these URL patterns, in this order:
 
    blog/
    admin/
 
The current path, media/banner/发货-2.jpg, didn't match any of these.

 

如何解决呢?需要一次做出如下操作:

1.正确配置MEDIA_URL和MEDIA_ROOT

settings中配置。

1
2
3
MEDIA_URL = '/media/'
# 设置上传文件的路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')   # 指定根目录

 2.在Model中应用配置

1
2
3
class ProductInfo(models.Model):
    # 商品模型:pic为该商品的图片在项目中存储的相对路径
    pic = models.ImageField(verbose_name="图片路径", default="image/default.png", upload_to='df_goods/image/%Y/%m', null=True, blank=True# 商品图片

 3.配置url路由

1
2
3
4
5
6
7
8
from django.views.static import serve  # 上传文件处理函数
 
from .settings import MEDIA_ROOT  # 从配置中导入MEDIA_ROOT
 
 
urlpatterns = [
    url(r'^media/(?P<path>.*)$', serve, {"document_root":MEDIA_ROOT})
]

 4.配置templates模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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_url上传文件路径注册到模板中
            ],
        },
    },
]

 5.在页面中使用

<img src="{{ MEDIA_URL }}{{ product.pic }}">
其中{{ product.pic }}为商品的路径

页面经过渲染之后,在浏览器中会显示为:

<img src="/media/product/image/2019/05/product_detail.jpg">

 

posted on   guofu  阅读(616)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示