ValueError at / 'photo' 属性没有与之关联的文件



问题:

我想把我的产品文件的图片上传到服务器上。但是当我传递文件URL时<{{product.photo.url}}>在我的HTML文件中显示值错误:照片属性没有与其关联的文件。

下面是我的python和HTML文件代码:

product.py文件:

from django.db import models
from django.db.models import ImageField
from .category import Category
class Product(models.Model):
name = models.CharField(max_length=500)
description = models.CharField(max_length=200, blank=True, null=True)
photo = models.ImageField(upload_to='uploads/product/',
blank=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE, default=1)
manufacturer = models.CharField(max_length=300,
blank=True)
price = models.IntegerField(default=0)
@staticmethod
def get_all_products():
return Product.objects.all()

在上面的Imagefield代码中,我传递了"photo"变量,但服务器也显示了错误。

urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from . import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('store.urls'))
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Index.html代码

<body>

<div.<div class="container-fluid">
<div class="row mx-auto">
{% for product in products %}
<div class="card mx-auto mb-3 mt-3" style="width: 18rem;">
<img src="{{product.photo.url}}" class="card-img-top" alt="...">
<div class="card-body">
<p class="card-title"><b>{{product.name}}</b></p>
<p class="card-text"><b>{{product.price}}</b>
<a href="#" class="btn btn-light border btn-md">Add To Cart</a>
</div>
</div>
{% endfor %}
</div>
</div>

令人困惑的是,当我传递代码{{product.image.url}}而不是{{product.photo.url}}时,它显示的是整体输出,而不是产品图像

settings.py代码:

STATIC_URL = '/static/'
MEDIA_URL = '/test/'
MEDIA_ROOT = BASE_DIR

我认为它不是从源代码读取/获取URL;我应该如何解决这个问题

您的文件和代码有点令人困惑,但这正是我的想法

错误

"照片"处的ValueError

非常清楚。photo没有与之相关的文件/属性。我也不确定你希望这个{{product.photo.url}输出什么——从我所看到的来看,这不会产生任何值。如果您认为product指的是文件,photo指的是定义的属性,而urlphoto对象的间接变量,那么这是错误的方法。

关于如何在src标签中嵌入URL,请参阅此处的答案-如何在img src标签中添加django模板变量

相关内容

最新更新