Django:博客图片未正确上传

时间:2020-08-06 05:32:42

标签: python django

我敢肯定我做的事很愚蠢,但是,当我尝试在个人博客网站上上传个人资料图片时,即使我通过管理页面添加了个人头像,图片也不会出现。 >

这就是正在发生的事情,

博客图片:

1

Kimmc6008旁边的图片,我应该看到我的图片,但是以某种方式失败了。

这是代码,如果需要,我会上传更多代码。 models.py

class Author(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    profile_picture = models.ImageField()

    def __str__(self):
        return self.user.username


class CategoryBlog(models.Model):
    title = models.CharField(max_length=20)

   def __str__(self):
        return self.title


class Post(models.Model):
    title = models.CharField(max_length=100)
    overview = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)
    comment_count = models.IntegerField(default=0)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    thumbnail = models.ImageField()
    categories = models.ManyToManyField(CategoryBlog)
    featured = models.BooleanField(null=True)

    def __str__(self):
        return self.title

views.py

def blog(request):
    post_list = Post.objects.all()
    context = {
        'post_list': post_list
    }
    return render(request, 'blog.html', context)

和我的html

<!-- post -->
            {% for post in post_list %}
          <div class="post col-xl-6">
            <div class="post-thumbnail"><a href="/post"><img src="{{post.thumbnail.url}}" alt="..." class="img-fluid"></a></div>
            <div class="post-details">
              <div class="post-meta d-flex justify-content-between">
                <div class="date meta-last">20 May | 2016</div>
                  {% for cat in post.categories.all %}
                <div class="category"><a href="#"></a>{{ cat }}</div>
                      {% endfor %}
              </div><a href="/post">
                <h3 class="h4">{{ post.title }}</h3></a>
              <p class="text-muted">{{ post.overview }}</p>
              <footer class="post-footer d-flex align-items-center">
                  <a href="#" class="author d-flex align-items-center flex-wrap">
                      <div class="avatar"><img src="{{ post.author.profile_picture.url }}" alt="..." class="img-fluid"></div>
                      <div class="title"><span>{{ post.author.user.username }}</span></div>
                  </a>
                <div class="date"><i class="icon-clock"></i>{{ post.timestamp|timesince }} ago</div>
                <div class="comments meta-last"><i class="icon-comment"></i>{{ post.comment_count }}</div>
              </footer>
            </div>
          </div>
            {% endfor %}

谢谢您的帮助!

编辑 我发现我的settings.py中缺少MEDIA_ROOT。 这是为什么吗?

1 个答案:

答案 0 :(得分:1)

在您的ImageField中添加upload_to参数

profile_picture = models.ImageField(upload_to='pictures')

这些是您在django项目中需要进行图像/文件处理的基本设置

project / urls.py

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [..]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

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