在模板django中使用图像
我想在模板中查看图像,但我不明白我做错了什么 models.py在模板django中使用图像,django,django-templates,Django,Django Templates,我想在模板中查看图像,但我不明白我做错了什么 models.py class Item(models.Model): name = models.CharField(verbose_name = "Название", max_length = 100) TYPE_ITEMS = ( ("shirt", "Футболка"), ("shoes", "Обувь"), ("bags", "Рюкзаки и сумки"),
class Item(models.Model):
name = models.CharField(verbose_name = "Название", max_length = 100)
TYPE_ITEMS = (
("shirt", "Футболка"),
("shoes", "Обувь"),
("bags", "Рюкзаки и сумки"),
("heads", "Головные уборы"),
("others", "Другое"),
)
type_item = models.CharField(verbose_name = "Тип продукта",
choices = TYPE_ITEMS, max_length = 6,
default = "shirt")
other = models.CharField("другая информация", max_length = 200)
color = models.CharField("Цвет(а)", max_length = 100)
cost = models.IntegerField("Стоимость за штуку", default = 0)
is_available_now = models.BooleanField("Есть ли в наличии?",
default = False)
available_count = models.IntegerField("Количество в наличии", default = 0)
photo = models.ImageField("Фото", upload_to = "photos/to_trade")
def __str__(self):
return self.name + " " + self.color + " (" + str(self.cost) + " грн)"
views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext, loader ####
from myapp.models import Item
def index(request):
return render(request, "index.html")
def goods(request):
shirts_list = Item.objects.filter(type_item = "shirt")
template = loader.get_template("goods.html")
context = RequestContext(request, {
"shirts_list": shirts_list,})
return HttpResponse(template.render(context))
def contacts(request):
return render(request, "contacts.html")
def delivery(request):
return render(request, "delivery.html")
url.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from myapp import views
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'paporotnik.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^$', views.index, name = "index"),
url(r'^goods', views.goods, name = "goods"),
url(r'^contacts', views.contacts, name = "contacts"),
url(r'^delivery', views.delivery, name = "delivery"),
url(r'^photos/to_trade/(?P<path>.*)$', 'django.views.static.serve'),
)
这是我的模板:
{% load staticfiles %}
<!DOCTYPE HTML>
<html>
<head>
<meta charset = "utf-8">
<title>Товары - Paporotnik.ua</title>
<link rel = "stylesheet", type = "text/css", href = "{% static 'myapp/style_index.css' %}">
</head>
<body>
<div id="container">
<!-- Верхняя панель (заголовок) -->
<div id="header">
<div style = "float: left; width:100%">
<div style = "margin: 0 10%;">
<br><h1 id = "heed">Paporotnik.ua</h1><br>
</div>
</div>
<div id = "divLogo">
<img id = "logo", width = "125", height = "125">
</div>
<div id = "trash" align = "center">
<h3>Корзина</h3>
<img align = "center", width = "70", height = "50">
</div>
</div>
<!-- Центр, основное содержимое -->
<div id="wrapper">
<div id="content">
<p align = "center">
<h2 align = "center">Футболки</h2>
<div align = "center">
{% for item in shirts_list %}
<img src = "{{item.photo}}", width = "150", height = "250">
{% endfor %}
</div>
</div>
</div>
</div>
</body>
</html>
{%load staticfiles%}
ааааф-Paporotnik.ua
Paporotnik.ua
{%endfor%}
在浏览器中查看代码时,路径是正确的:
但当我点击URL时,我看到:
它告诉我我的照片不存在,但它在那里
您没有正确指定照片的URL。在模板中,替换该行
<img src = "{{item.photo}}", width = "150", height = "250">
与
<img src = "{{item.photo.url}}", width = "150", height = "250">
我想您没有指定
媒体
文件夹。在settings.py中,您需要:
MEDIA_URL = '/media/'
MEDIA_ROOT = join(settings.PROJECT_ROOT, 'media')
和photos/to_trade
应位于此media
文件夹中。您还需要在模板中使用{{item.photo.url}
,而不是{{item.photo}
我想提醒您的东西<代码>静态
存储网站前端所需的css、js和图像<代码>媒体存储用户上传的所有图像。因此,在您的设置中定义
MEDIA_URL = 'media/'
然后,在模板中,将/{{MEDIA\u URL}}
附加到{{item.photo}
前面
并在URL.py文件中,向urlpatterns追加:
+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这应该可以解决问题。试试
{{{item.photo.url}
它没有帮助((哦……我看到Gocht建议使用同样的方法了!非常感谢)。
+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)