Атрибут 'cover' не имеет связанного с ним файла. Джанго - PullRequest
0 голосов
/ 14 октября 2019

Я хочу отображать изображения людей в таблице с колонками их имен и фамилий. Когда я ставлю в качестве исходного статического, он показывает картинки, но когда я отправляю запрос в базу данных, он не показывает. И его уже вставьте данные в базу данных и изображение в /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 ]

1 голос
/ 14 октября 2019

Без настроек и кода шаблона трудно получить полную картину, но здесь у вас есть несколько советов:

Для отображения статических файлов в шаблоне не забудьте использовать тег {% load static %}.

В любом случае, загруженные пользователем файлы лучше живут в медиа-папке, а не в статической. Вы должны включить его в свои settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
0 голосов
/ 15 октября 2019

Если проблема не решена. Попробуйте это.

в urls.py добавьте это внизу:

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)

в HTML-шаблоне

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

в settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...