Django 1.9 配置 ImageField 上传图片并正确显示
本文介绍如何在 Django 1.9 中通过 ImageField 上传图片并在前端正确显示。核心在于配置 urls.py 以处理媒体文件请求,并在 settings.py 中定义 MEDIA_ROOT 和 MEDIA_URL。通过示例代码展示模型定义、模板引用及 URL 配置,确保上传文件路径能被 Web 服务器正确访问。
假设你使用 Django 模型的 ImageField 上传图片,并希望在前台通过 img 标签展示。能否成功访问图片的关键,在于是否能够通过正确的路径进行访问。
在 models.py 文件中,image 字段的定义如下所示:
image = models.ImageField(upload_to='images/%Y/%m', verbose_name='文件缩略图')
在展示页面 show.html 中,使用 img 标签来显示图片:
<img class="center-block thumbnail" src="{{result.object.image.url }}" alt="" />
然而,{{result.object.image.url}} 仅仅读取了模型中 upload_to 参数指定的路径,这并不能直接让图片在浏览器中显示出来。要在模板中正确显示图片,还需要在 urls.py 和 settings.py 中进行相应的配置。
接下来,请在你的 urls.py 文件中进行如下配置:
from django.conf.urls import include, url from django.conf import settings from django.conf.urls.static import static urlpatterns = [ '''你的其他url配置''' ] urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在 settings.py 文件中,需要配置 MEDIA_URL 和 MEDIA_ROOT。这里定义了媒体相关的配置,即确定了模型中 ImageField 参数 upload_to 所指向的目录。
MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
完成上述配置后,我们就能正确访问通过 ImageField 上传的图片了。以下是官方文档中的一些相关说明。
具体的相关文档内容如下。
在模型中调用 FileField 或 ImageField(见下方说明)需要执行以下步骤:
在你的 settings 文件中,必须定义 MEDIA_ROOT 作为 Django 存储上传文件的路径(出于性能考虑,这些文件不应存储在数据库中)。同时定义一个 MEDIA_URL 作为基础 URL 或目录。请确保该目录允许 Web 服务器使用的账户进行写入操作。
在模型中添加 FileField 或 ImageField 字段,并定义 upload_to 参数。该参数的值应为 MEDIA_ROOT 的子目录,用于存放上传的文件。
数据库中仅存储该文件的路径(相对于 MEDIA_ROOT)。你通常会使用 Django 提供的便捷 url 属性。例如,如果你的 ImageField 命名为 mug_shot,你可以在模板中使用 {{ object.mug_shot.url }} 来获取照片的绝对路径。
例如,如果你的 MEDIA_ROOT 设定为 '/home/media',并且 upload_to 设定为 'photos/%Y/%m/%d'。upload_to 中的 '%Y/%m/%d' 会被 strftime() 函数格式化;'%Y' 将被格式化为四位数年份,'%m' 被格式化为两位数月份,'%d' 是两位数日期。如果你在 2007 年 1 月 15 日上传了一个文件,它将被保存在 /home/media/photos/2007/01/15 目录下。
以上关于 Django 1.9 加载通过 ImageField 上传的图片方法的介绍到此结束,希望能对大家有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













