首页 > 解决方案 > 'cover' 属性没有与之关联的文件。姜戈

问题描述

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

视图.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})

模型.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>

标签: pythondjango

解决方案


如果没有设置和模板代码,很难获得全貌,但这里有一些提示:

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

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

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

推荐阅读