Невозможно загрузить изображения в формах django

Я только начинаю работать с Django и столкнулся с первой проблемой, которую не могу решить. С уровня администратора можно загружать фотографии, но с формы на сайте это невозможно. Единственная фотография, которая может быть загружена, это фотография по умолчанию, которую я установил в файле models. Если я удалю картинку по умолчанию из models и загружу фотографию из формы, появится ошибка.

Вот некоторые из моих файлов:

<
class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    publish_date = models.DateTimeField(blank=True, null=True)
    image = models.ImageField(upload_to='images/', blank=True, null=True, default='images/user.jpg')

    def publish(self):
        self.publish_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

forms.py:

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['title', 'text', 'image']

views.py:

class Image(TemplateView):
form = PostForm
template_name = 'blog/image.html'

def post(self, request, *args, **kwargs):
    form = PostForm(request.POST, request.FILES)
    if form.is_valid():
        obj = form.save()
        return HttpResponseRedirect(reverse_lazy('image_display', kwargs={'pk': obj.id}))

    context = self.get_context_data(form=form)
    return self.render_to_response(context)

def get(self, request, *args, **kwargs):
    return self.post(request, *args, **kwargs)

class ImageDisplay(DetailView):
    model = Post
    template_name = 'blog/image_display.html'
    context_object_name = 'image'


def post_list(request):
    posts = Post.objects.filter(publish_date__lte=timezone.now()).order_by('publish_date')
    return render(request, 'blog/post_list.html', {'posts': posts})


def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})


def error_404_view(request, exception):
    data = {"name": "Blog for programmers"}
    return render(request, 'blog/404.html', data)


def post_new(request):
    if request.method == "POST":
        form = forms.PostForm(request.POST, request.FILES)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.publish_date = timezone.now()
            post.save()
            return redirect('post_detail', pk=post.pk)
    else:
        form = PostForm()
    return render(request, 'blog/post_edit.html', {'form': form})

post_detail.html:

{% block content %}
    <div class="post">
    {% if post.published_date %}
    <div class="date">
        {{ post.published_date }}
    </div>
    {% endif %}
    <h2>{{ post.title }}</h2>
    <img src="{{ post.image.url }}" alt="Image" width="250">
    <p>{{ post.text|linebreaksbr }}</p>
</div>

post_list.html:

{% block content %}
    {% for post in posts %}
    <div class="post">
        <div class="data">
        <p>Published: {{ post.publish_date }}</p>
        </div>
    <h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
        <img src="{{ post.image.url }}" alt="Image" width="100">
    <em>{{ post.text|linebreaksbr }}</em>
    </div>
    {% endfor %}

Спасибо за помощь!!!

Вернуться на верх