【问题标题】:Django: How to show a picture from my database in a template?Django:如何在模板中显示我的数据库中的图片?
【发布时间】:2021-09-15 20:14:58
【问题描述】:

我正在使用Django,并试图从我的数据库中显示一张图片。但是,我做不到。

我使用的大部分代码来自this article

这是我的代码。

我的model("ingredient") 使用:

title = models.CharField(max_length=50, primary_key=True)
pictureLink = models.ImageField(upload_to="media")

我在我的数据库中提供的图片链接是:

C:\Users"Me"\Desktop"project"\image\leaves.png

我的views.py 包含:

def say_hello(request):
    allimages = Ingredient.objects.all()  
    return render(request, 'hello.html', {'images' : allimages})

我的 HTML 代码如下:

{% for img in images %}  
  <tr>
    <td>{{img.title}}</td>
    <td><img src="{{ingredient.pictureLink.url}}" width="120"/></td>
  </tr>
  {% endfor %} 

settings.py我放了以下内容:

BASE_DIR = Path(__file__).resolve().parent.parent
MEDIA_ROOT = os.path.join(BASE_DIR, 'image') 
MEDIA_URL = '/image/'

我在哪里犯错了?我是 Django 的初学者,感谢所有反馈!

【问题讨论】:

  • 您是否在网址中提供了media
  • @HamidrezaKhorammfar 这是我的主要 urls.py:urlpatterns = [ path('admin/', admin.site.urls), path('playground/', include('playground.urls') ), path('__debug__/', include(debug_toolbar.urls)) ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

标签: python django database image


【解决方案1】:

首先更改您的settings.py

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = "/media/"
STATIC_URL = '/media/static/'
STATICFILES_DIRS = (BASE_DIR / 'media/static', ) 
STATIC_ROOT = 'media/staticfiles/'

其次在你的路径中创建一个名为media的文件夹

然后将此添加到您的应用程序中的urlpatterns urls.py 到此:

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

不要忘记将这些导入到您的应用程序文件夹中的urls.py 文件中

from django.conf import settings
from django.conf.urls import url
from django.views.static import serve

【讨论】:

  • 感谢您的回复!不过似乎仍然不起作用......我已经更改了设置,在我的路径中添加了一个文件夹(~\Appdata\Local\Programs\Python\Python39\python.exe)并添加了 urlpatterns。当我运行我的代码并运行服务器时,我确实得到了一个图片图标,所以它知道必须有一张图片,但我要显示的图片仍然不存在。
  • 在你的项目路径中创建 media 文件夹并与 manage.py 并排我的意思是并尝试在你的路径中再次添加照片
  • 非常感谢您花时间提供帮助,但恐怕它仍然无法正常工作......我现在有一个与 manage.py 和应用程序处于同一级别的媒体文件夹。在文件夹中,我有一张名为 Leaves.png 的图片。在我的数据库中,pictureLink (varChar) 列中填充了“media/leaves.png”。你认为我的数据库有问题还是我的代码有问题?占用您这么多时间,我深表歉意
  • @TicovanHoek 如果你愿意,你可以把你的项目发给我,以便我修复它
  • 你真是太好了,但我不想打扰你。我将继续查看文档以尝试找到解决方案。不过感谢您的提议!
猜你喜欢
  • 2020-07-10
  • 2019-02-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
  • 1970-01-01
  • 2012-03-18
相关资源
最近更新 更多