如何在Django模板中查看图像

如何在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)

我正在使用Django 1.7上传图像并在模板上查看它们。由于某些原因,我上传的图像没有显示。我已经确认它们已上载,并且路径已保存在数据库中。但是当从模板中检索它时,我什么也得不到。我有以下代码:

型号.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'),
)
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/
内容。