如何在Django模板中查看图像
我正在使用Django 1.7上传图像并在模板上查看它们。由于某些原因,我上传的图像没有显示。我已经确认它们已上载,并且路径已保存在数据库中。但是当从模板中检索它时,我什么也得不到。我有以下代码: 型号.py如何在Django模板中查看图像,django,django-templates,Django,Django Templates,我正在使用Django 1.7上传图像并在模板上查看它们。由于某些原因,我上传的图像没有显示。我已经确认它们已上载,并且路径已保存在数据库中。但是当从模板中检索它时,我什么也得不到。我有以下代码: 型号.py ... class Pet(models.Model): title = models.CharField(_("Title"), max_length=120) slug = models.SlugField(max_length=100, db_index=True)
...
class Pet(models.Model):
title = models.CharField(_("Title"), max_length=120)
slug = models.SlugField(max_length=100, db_index=True)
description = models.TextField(_("Description"), default='')
....
class PetImage(models.Model):
pet = models.ForeignKey(Pet, related_name='images')
title = models.CharField(max_length=200, null=True, blank=True)
image = models.ImageField(upload_to="pet_images", null=True, blank=True)
from django.forms.models import inlineformset_factory
from django.forms import ModelForm
from .models import Pet, PetImage
class PetForm(ModelForm):
class Meta:
model = Pet
fields = ('title', 'description',)
PetImageFormset = inlineformset_factory(Pet, PetImage, fields=('image',), can_delete=False, extra=3)
...
def new_pet(request):
form = PetForm()
img_formset = PetImageFormset(instance=Pet())
if request.method == 'POST':
form = PetForm(data=request.POST)
if form.is_valid():
pet = form.save(commit=True)
img_formset = PetImageFormset(request.POST, request.FILES, instance=pet)
if img_formset.is_valid():
img_formset.save()
return redirect(pet)
return render(request, "pets/new_pet.html", {
'form': form,
'img_formset': img_formset,
'action': "Create"
})
def view_pet(request, pet_slug, pet_id):
pet = get_object_or_404(Pet, pk=pet_id)
return render(request, 'pets/view_pet.html', {'pet': pet})
from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^$', 'apps.pets.views.all_pets', name='all_pets'),
url(r'^(?P<pet_slug>[-\w\d]+),(?P<pet_id>\d+)/$', 'apps.pets.views.view_pet', name='view_pet'),
url(r'^new$', 'apps.pets.views.new_pet', name='new_pet'),
)
forms.py
...
class Pet(models.Model):
title = models.CharField(_("Title"), max_length=120)
slug = models.SlugField(max_length=100, db_index=True)
description = models.TextField(_("Description"), default='')
....
class PetImage(models.Model):
pet = models.ForeignKey(Pet, related_name='images')
title = models.CharField(max_length=200, null=True, blank=True)
image = models.ImageField(upload_to="pet_images", null=True, blank=True)
from django.forms.models import inlineformset_factory
from django.forms import ModelForm
from .models import Pet, PetImage
class PetForm(ModelForm):
class Meta:
model = Pet
fields = ('title', 'description',)
PetImageFormset = inlineformset_factory(Pet, PetImage, fields=('image',), can_delete=False, extra=3)
...
def new_pet(request):
form = PetForm()
img_formset = PetImageFormset(instance=Pet())
if request.method == 'POST':
form = PetForm(data=request.POST)
if form.is_valid():
pet = form.save(commit=True)
img_formset = PetImageFormset(request.POST, request.FILES, instance=pet)
if img_formset.is_valid():
img_formset.save()
return redirect(pet)
return render(request, "pets/new_pet.html", {
'form': form,
'img_formset': img_formset,
'action': "Create"
})
def view_pet(request, pet_slug, pet_id):
pet = get_object_or_404(Pet, pk=pet_id)
return render(request, 'pets/view_pet.html', {'pet': pet})
from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^$', 'apps.pets.views.all_pets', name='all_pets'),
url(r'^(?P<pet_slug>[-\w\d]+),(?P<pet_id>\d+)/$', 'apps.pets.views.view_pet', name='view_pet'),
url(r'^new$', 'apps.pets.views.new_pet', name='new_pet'),
)
视图.py
...
class Pet(models.Model):
title = models.CharField(_("Title"), max_length=120)
slug = models.SlugField(max_length=100, db_index=True)
description = models.TextField(_("Description"), default='')
....
class PetImage(models.Model):
pet = models.ForeignKey(Pet, related_name='images')
title = models.CharField(max_length=200, null=True, blank=True)
image = models.ImageField(upload_to="pet_images", null=True, blank=True)
from django.forms.models import inlineformset_factory
from django.forms import ModelForm
from .models import Pet, PetImage
class PetForm(ModelForm):
class Meta:
model = Pet
fields = ('title', 'description',)
PetImageFormset = inlineformset_factory(Pet, PetImage, fields=('image',), can_delete=False, extra=3)
...
def new_pet(request):
form = PetForm()
img_formset = PetImageFormset(instance=Pet())
if request.method == 'POST':
form = PetForm(data=request.POST)
if form.is_valid():
pet = form.save(commit=True)
img_formset = PetImageFormset(request.POST, request.FILES, instance=pet)
if img_formset.is_valid():
img_formset.save()
return redirect(pet)
return render(request, "pets/new_pet.html", {
'form': form,
'img_formset': img_formset,
'action': "Create"
})
def view_pet(request, pet_slug, pet_id):
pet = get_object_or_404(Pet, pk=pet_id)
return render(request, 'pets/view_pet.html', {'pet': pet})
from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^$', 'apps.pets.views.all_pets', name='all_pets'),
url(r'^(?P<pet_slug>[-\w\d]+),(?P<pet_id>\d+)/$', 'apps.pets.views.view_pet', name='view_pet'),
url(r'^new$', 'apps.pets.views.new_pet', name='new_pet'),
)
url.py
...
class Pet(models.Model):
title = models.CharField(_("Title"), max_length=120)
slug = models.SlugField(max_length=100, db_index=True)
description = models.TextField(_("Description"), default='')
....
class PetImage(models.Model):
pet = models.ForeignKey(Pet, related_name='images')
title = models.CharField(max_length=200, null=True, blank=True)
image = models.ImageField(upload_to="pet_images", null=True, blank=True)
from django.forms.models import inlineformset_factory
from django.forms import ModelForm
from .models import Pet, PetImage
class PetForm(ModelForm):
class Meta:
model = Pet
fields = ('title', 'description',)
PetImageFormset = inlineformset_factory(Pet, PetImage, fields=('image',), can_delete=False, extra=3)
...
def new_pet(request):
form = PetForm()
img_formset = PetImageFormset(instance=Pet())
if request.method == 'POST':
form = PetForm(data=request.POST)
if form.is_valid():
pet = form.save(commit=True)
img_formset = PetImageFormset(request.POST, request.FILES, instance=pet)
if img_formset.is_valid():
img_formset.save()
return redirect(pet)
return render(request, "pets/new_pet.html", {
'form': form,
'img_formset': img_formset,
'action': "Create"
})
def view_pet(request, pet_slug, pet_id):
pet = get_object_or_404(Pet, pk=pet_id)
return render(request, 'pets/view_pet.html', {'pet': pet})
from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^$', 'apps.pets.views.all_pets', name='all_pets'),
url(r'^(?P<pet_slug>[-\w\d]+),(?P<pet_id>\d+)/$', 'apps.pets.views.view_pet', name='view_pet'),
url(r'^new$', 'apps.pets.views.new_pet', name='new_pet'),
)
来自django.conf.url导入模式,url
urlpatterns=模式(“”,
url(r'^$','apps.pets.views.all_pets',name='all_pets'),
url(r'^(?P[-\w\d]+),(?P\d+/$),'apps.pets.views.view\u pet',name='view\u pet'),
url(r“^new$”、“apps.pets.views.new\u pet”、name='new\u pet'),
)
如何在模板上查看与宠物相关的图像?这是我到目前为止尝试过的,但未显示图像:
查看\u pet.html
<ul class="slides">
{% for photo in pet.petimage_set.all %}
<li><img src="{{ MEDIA_URL }}{{ photo.image }}" /> </li>
{% endfor %}
</ul>
{%用于pet.petimage_set.all%中的照片]
{%endfor%}
因为您的PetImage
型号的相关名称
对于Pet
外键是“images”,所以将循环更改为
{% for photo in pet.images.all %}
根据您粘贴的代码,
photo.image
没有任何作用。您是否试图在循环中为Pet
模型获取相应的PetImage
模型,然后显示该模型的image
字段?是的@Celeo,这正是我试图做的。谢谢。工作得很有魅力。此外,我忘了更新我的url.py以提供/media/
内容。