'cover'属性没有与之关联的文件。 Django的

时间:2019-10-14 12:33:34

标签: python django

我想在一张带有其姓名和姓氏列的表格中显示人物图片。当我将其作为源静态文件时,它会显示图片,但是当我向数据库发送请求时,它不会显示。并且它已经将数据插入数据库,并将图片插入/media/images/

view.py:

def viewpost(request):
        person_list = Persona.objects.all()


        if request.method == 'POST':
            if request.POST.get('name') and request.POST.get('surname') and request.POST.get('address'):
                person = Persona()
                person.name = request.POST.get('name')
                person.surname = request.POST.get('surname')
                person.address = request.POST.get('address')
                person.age = request.POST.get('age')
                person.cover = request.FILES['cover']
                person.save()


                return HttpResponseRedirect('/viewpost')

        else:

            return render(request, 'mysite/viewpost.html', {'persons': person_list})

model.py:

class Persona(models.Model):
    name = models.CharField(max_length=255, unique=False)
    surname = models.CharField(max_length=255, unique=False)
    address = models.TextField()
    age = models.CharField(max_length=255, unique=False)
    cover = models.ImageField(upload_to='images/')

和模板:

<td ><img src="{{person.cover.url}}" class="img-responsive" width="40px" id="pop" data-toggle="modal" data-target="#myModal"/></td>

2 个答案:

答案 0 :(得分:1)

没有设置和模板代码,很难获得整个图片,但是这里有一些提示:

要在模板中显示静态文件,请记住使用{% load static %}标签。

无论如何,用户上载的文件在媒体文件夹中的状态更好,而不是静态的。您应该将其包含在settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

答案 1 :(得分:0)

如果问题没有解决。试试这个。

在urls.py中将此添加到底部:

   brand = ""
   try:
       brand = make_rating_sp[0].img["title"].title()
   except:
       pass

在html模板中

from django.conf.urls.static import static
from django.conf import settings

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在settings.py

<form method="post" enctype="multipart/form-data">