Изображение не загружено в папку мультимедиа в Django - PullRequest
0 голосов
/ 27 января 2020

Невозможно загрузить изображение в Django Модель.

Я установил подушку, добавил MEDIA_URL и MEDIA_ ROOT в мои настройки, добавил static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) в мой urls.py.

forms.py:

class PostForm(forms.ModelForm) :
    class Meta :
        model = Post
        fields = ['name', 'image', 'description', 'age', 'cost', 'address', 'seller', 'phone', ]

post_edit. html:

{% extends 'blog/base.html' %}

{% block content %}
    <h2>New post</h2>
    <form method="POST" class="post-form">{% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Save</button>
    </form>
{% endblock %}

models.py:

image = models.ImageField(upload_to='images/', null=True, blank=True)

urls.py :

path('edit/', views.post_edit, name='post_edit'),

views.py:

@login_required
def post_edit(request, pk) :
    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST" :
        form = PostForm(data=request.POST, files=request.FILES, instance=post)
        if form.is_valid() :
            post = form.save(commit=False)
            post.save()
            return redirect('post_detail', pk=post.pk)
    else :
        form = PostForm(instance=post)
    return render(request, 'blog/post_edit.html', {'form' : form})

Если я добавлю изображение в новый объект, оно не будет загружено в media/images/. С моим скромным уровнем понимания я не могу найти ошибку. Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

1 голос
/ 27 января 2020

Вам необходимо добавить enctype="multipart/form-data" атрибут формы в шаблон:

<form method="POST" class="post-form" enctype="multipart/form-data">{% csrf_token %}

Из do c:

Обратите внимание, что запрос .FILES будет содержать данные только в том случае, если метод запроса был POST, а отправивший запрос имеет атрибут enctype = "multipart / form-data"

...