Как записать файл атрибута изображения в django (Атрибут 'image' не имеет связанного с ним файла)

Я создаю сайт блога на django и пытаюсь загрузить изображение на сайт. Я могу получить доступ к фотографии на странице администратора, но всякий раз, когда я пытаюсь получить доступ к ней на странице, я получаю ошибку. Трассировка говорит "

The 'image' attribute has no file associated with it.

Это мой код для модели

class article(models.Model):
    title = models.CharField(max_length=200)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.TextField()
    image = models.ImageField(null=True, blank=True, upload_to='static/media/article')
    date = models.DateTimeField(default=timezone.now)

    def __str__ (self):
        return self.title

    def get_absolute_url(self):
        return reverse('article-detail', kwargs= {'pk':self.pk})

Это код моих представлений

class ArticleCreateView(LoginRequiredMixin, CreateView):
    model = article
    fields= ['title', 'content', 'image']

    def ArticleCreateView(request):
         if request.method == "POST":
                form = ArticleForm(request.POST, request.FILES)
                if form.is_valid():
                    article = form.save(commit=False)
                    article.author = request.user.id
                    article.save()
                    return HttpResponse

это код шаблона блога

{% extends "agri_tourism/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<section class="flex-container">
  <div>
    {% for article in articles %}
     <article class="media content-section">
        {% load static %}
        
           <div class="media-body">
              <div style="text-decoration:none; display: inline-block;" class="article-metadata">
                <img class="rounded-circle article-img" src="{{user.profile.image.url}}">
                <a style="text-decoration:none;" class="mr-2" href="#">{{ article.author }}</a>
                <small class="article-date">{{ article.date|date:"F d, Y" }}</small>
              </div>
            <h2><a class="article-title" href="">{{ article.title }}</a></h2>
          <p class="article-content">{{ article.content }}</p>
          <img class="image-content" id="image-el" src = "{{article.image.url}}">
          <div class="like-share-btns">
            
            
       </div>
     </article>
     {% endfor %}

Код страницы формы приведен ниже

{% extends "agri_tourism/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
   <div class = "content-section"> 
    <div class = "container">
        <div class = "row md-8">
        <form method = "POST" enctype="multipart/form-data"> 
            {% csrf_token %}
            <fieldset class = "form-group">
               <legend class ="border-bottom mb-4">Blog article</legend>
               {{form|crispy }}
               {{form.media}}
            </fieldset>
            <div class= "form-group">
                <button class="btn btn-outline-info" type="submit" style= "margin-top:4px; ">Submit the Article</button>    
            </div>
        </form>  
    </div>
</div>
</div>

Я хочу получить доступ к фотографиям на странице блога

проверьте изображение с условием if следующим образом...

<div class="media-body">
<div style="text-decoration:none; display: inline-block;" class="article-metadata">
  
  {% if user.profile.image.url %}
    <img class="rounded-circle article-img" src="{{user.profile.image.url}}">
  {% endif %}
  <a style="text-decoration:none;" class="mr-2" href="#">{{ article.author }}</a>
  <small class="article-date">{{ article.date|date:"F d, Y" }}</small>
</div>

и также проверьте эти настройки

urls.py (в каталоге проекта)

from django.conf import settings # --------> this
from django.conf.urls.static import static # --------> this

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # --------> this
<
MEDIA_ROOT =  os.path.join(BASE_DIR, 'media') 
MEDIA_URL = '/media/'
Вернуться на верх