【问题标题】:django image upload to path is not displayingdjango 图片上传到路径未显示
【发布时间】:2018-06-09 23:38:47
【问题描述】:

我有一个应用程序,我在其中上传图像并将图像上传到特定目录,但是在上传后如果我注意点击图像 url 会正常工作,我会收到一条错误消息 The current URL, media/gallery/2017/12/28/230-256.png, didn't match any of these 并且图像未显示在浏览器 html 中 尽管在设置中定义了我的媒体路径,但下面是我的模型和视图

Models.py

class Gallery(models.Model):
    name = models.CharField(max_length=400, db_index=True)
    image = models.ImageField(upload_to='gallery/%Y/%m/%d', blank=True)

    class Meta:
        ordering = ('name',)

    def __str__(self):
        return self.image.url

Views.py

def index(request):
    gallery = Gallery.objects.all()
    context = {
        'gallery': gallery,
        }
    template = 'gallery.html'
    return render(request, template, context)

html

{% if gallery.image %}
           <div><a href="{{ gallery.image.url }}" title="{{gallery.name}}"><img src="{{ gallery.image.url }}"></a></div>
           {% endif %}

【问题讨论】:

  • 您的设置是否正确配置?
  • 是的,我确实配置了我的设置。

标签: python django


【解决方案1】:

在开发的时候,必须在项目的urls.py中添加

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [

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

这将使应用程序可以访问您上传的文件。

在生产服务器上,如果网络服务器本身(apache,nginx,..)可以到达上传文件的位置,您可以在其他答案中找到如何配置它(here 用于 nginx , 和 here 用于 apache

【讨论】:

  • 谢谢。我不敢相信我完全跳过了这个。谢谢
【解决方案2】:

您的 HTML 需要是这样的:

{% if gallery.image %}
    <div><a href="{{ MEDIA_URL }}{{ gallery.image.url }}" title="{{gallery.name}}"><img src="{{ MEDIA_URL }}{{ gallery.image.url }}"></a></div>
{% endif %}

MEDIA_URL 应该配置在settings.py 中。这应该设置为您提供存储在 MEDIA_ROOT 中的文件的基本 URL。

图片字段的URL属性只存储图片的相对URL。

【讨论】:

  • 它甚至什么都不显示
  • 有几种可能性。 MEDIA_URL 和/或 MEDIA_ROOT 设置不正确,或者您没有设置任何内容来提供静态文件。
猜你喜欢
  • 2017-07-27
  • 2013-03-10
  • 2018-03-21
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多