当前位置: 首页 > news >正文

Django 中显示图片

在 Django 中显示图片的基本步骤包括:配置静态文件和媒体文件的处理、上传图片、以及在模板中显示图片。以下是详细步骤:

在这里插入图片描述

问题背景:

我在学习 Django 并在构建一个简单的网站,我尝试使用模板语言添加一些图片,但显示的结果是只有小的蓝色问号图标,而不是预期的图片。

以下是使用的模型定义:

from django.db import modelsclass Galery(models.Model):title = models.CharField(max_length = 120)def __unicode__(self):return self.titleclass Image(models.Model):galery = models.ForeignKey(Galery)name = models.CharField(max_length = 50, unique = True)picture = models.ImageField(upload_to='media')description = models.CharField(max_length = 500)materials = models.CharField(max_length = 150)def __unicode__(self):return self.name

在模板中试图显示图片:

{%extends 'home/base.html'%}
{%load static%}
{%block body%}
<div class="col-lg-12"><h1 class="page-header">My Projects</h1>
</div>
{%if image%}    {%for n in image%}  <div class="col-lg-3 col-md-4 col-xs-6 thumb"><a class="thumbnail" href=""><img class="img-responsive" src="{% static 'media/{{n.image.url}}' %}"></a></div>{%endfor%}
{%endif%}{%endblock%}

在设置中配置了媒体文件路径:

PROJECT_PATH = os.path.join(SETTINGS_DIR, os.pardir)
MEDIA_ROOT = os.path.join(PROJECT_PATH,'media')
TEMPLATE_DIRS = (TEMPLATE_PATH,
)
STATICFILES_DIRS = (STATIC_PATH,
)
STATIC_URL = '/static/'MEDIA_URL = '/media/'

我按照教程设置,但我仍然无法在模板中正确显示图片。

解决方案:

  1. 检查 MEDIA_URLMEDIA_ROOT 是否正确。MEDIA_URL 是用于访问媒体文件的 URL 前缀,而 MEDIA_ROOT 是媒体文件在服务器上的实际存储路径。确保它们的值是正确的,并且媒体文件已经上传到 MEDIA_ROOT 中。
  2. 检查是否设置了 staticfiles_dirs,这是用于查找静态文件的路径。确保 TEMPLATE_DIRS 中包含静态文件所在的路径。
  3. 确保在 urls.py 中正确地配置了媒体文件的服务。在 urlpatterns 中添加以下代码:
if settings.DEBUG:urlpatterns += patterns('django.views.static',(r'media/(?P<path>.*)','serve',{'document_root': settings.MEDIA_ROOT}), )
  1. 确保已经收集静态文件。可以通过运行以下命令进行收集:
python manage.py collectstatic
  1. 刷新浏览器并重新加载页面,检查图片是否正确显示。

代码示例:

# models.py
from django.db import modelsclass Galery(models.Model):title = models.CharField(max_length = 120)def __unicode__(self):return self.titleclass Image(models.Model):galery = models.ForeignKey(Galery)name = models.CharField(max_length = 50, unique = True)picture = models.ImageField(upload_to='media')description = models.CharField(max_length = 500)materials = models.CharField(max_length = 150)def __unicode__(self):return self.name# settings.py
PROJECT_PATH = os.path.join(SETTINGS_DIR, os.pardir)
MEDIA_ROOT = os.path.join(PROJECT_PATH,'media')
TEMPLATE_DIRS = (TEMPLATE_PATH,
)
STATICFILES_DIRS = (STATIC_PATH,
)
STATIC_URL = '/static/'MEDIA_URL = '/media/'# urls.py
if settings.DEBUG:urlpatterns += patterns('django.views.static',(r'media/(?P<path>.*)','serve',{'document_root': settings.MEDIA_ROOT}), )# template.html
{% for n in image %}  <div class="col-lg-3 col-md-4 col-xs-6 thumb"><a class="thumbnail" href=""><img class="img-responsive" src="{{ n.image.url }}"></a></div>
{% endfor %}

通过上述步骤,你可以在 Django 项目中实现图片的上传和显示功能。主要步骤包括配置静态和媒体文件路径、创建上传表单和处理视图、配置 URL 路由以及创建模板来展示图片。


http://www.mrgr.cn/news/222.html

相关文章:

  • 汽车EDI:法雷奥Valeo EDI项目案例
  • 一篇文章带你实现大模型及RAG入门---小白速进
  • 仿RabbitMq实现简易消息队列正式篇(连接篇)
  • SpringBoot 自动配置(Condition)
  • MySQL学习2之事务ACID特性以及实现机制
  • sanic + webSocket:股票实时行情推送服务实现
  • Redis的基本概念和使用
  • Nios II的BSP Editor
  • JNI编程二:JNI数据类型
  • 【Android 笔记】ADB 操作命令总结(持续更新)
  • mysql-windows下安装DBeaver管理mysql
  • Python Django 框架 01
  • php函数
  • 数据结构—— 初识二叉树
  • 探索微软Edge浏览器的隐藏玩法
  • C语言绽尽之“#”
  • 73、 dockerfile
  • eNSP 华为三层交换机配置DHCP
  • 第2章 C语言基础知识
  • Java面试题--JVM大厂篇之实战解析:如何通过CMS GC优化大规模Java应用的响应时间