Python Django:如何让模板视图显示图像——Noob版
注意:关于堆栈溢出,有很多问题与此相关。但是,这不是重复的,因为它需要noob级别的解释(即完成Django教程的人) 因此,我完成了Django教程,并开始制作自己的网站,以巩固我所学到的知识(并对其进行扩充)。我想做一个网站,可以显示一个给定对象的一些图像。因为前面提到的很多帖子都使用商品和图片(例如,在亚马逊上模拟一个产品的多个图片),所以我们也可以在这篇帖子中使用 我为自己制作了一个应用程序,并使用了名称间隔的URL和模板(如教程中所述) 此外,根据多对一文档,我有两种型号Python Django:如何让模板视图显示图像——Noob版,python,django,python-3.x,Python,Django,Python 3.x,注意:关于堆栈溢出,有很多问题与此相关。但是,这不是重复的,因为它需要noob级别的解释(即完成Django教程的人) 因此,我完成了Django教程,并开始制作自己的网站,以巩固我所学到的知识(并对其进行扩充)。我想做一个网站,可以显示一个给定对象的一些图像。因为前面提到的很多帖子都使用商品和图片(例如,在亚马逊上模拟一个产品的多个图片),所以我们也可以在这篇帖子中使用 我为自己制作了一个应用程序,并使用了名称间隔的URL和模板(如教程中所述) 此外,根据多对一文档,我有两种型号Product
Product
和ProductImage
,后者有一个ForeignKey
class Product(models.Model):
...
class ProductImage(models.Model):
product = models.ForeignKey("Product", on_delete=models.CASCADE)
image = models.ImageField(upload_to=product_dir_path)
使用反向多对一监视器(例如,aSpecificProduct.productimage\u set.all()
),我抓取了我在应用程序目录下设置的所有图像/uploads/product\u/image\u
,使用文档部分中的小上传到技巧
def product_dir_path(instance, filename):
return "<my_app>/uploads/product_{0}/{1}".format(instance.product.id, filename)
我在浏览网站时看到了什么
<img src="<my_app>/uploads/<specific_product>/image_<number>.png"/>
工作但是
如果后者具有src=“/static//product\u图像/product\u/”
前一个静态//product\u图像/product\u/
对您的mysite/url.py进行某些更改
<img src="{{img.image.url}}"/>
settings.py文件
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
新项目中不存在的媒体文件夹是什么?为什么?(记住这是noob版)我不能接受这个答案,因为它没有解决问题的全部内容。只需阅读docs@allcaps我理解django教程中解释的特定于应用程序的静态目录,这对我来说没有意义me@allcaps,我跟着那个文档页面,而我仍然得到404@allcaps我还非常确定这有一个与报价相关的错误src=“{%static”my_app/example.jpg“%}”
Nope,这是正确的模板代码。没有错误。如果有错误,请发布。
<img src="{{img.image.url}}"/>
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn')
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'media_cdn')