【问题标题】:django broken thumbnailsdjango 破碎的缩略图
【发布时间】:2015-06-13 22:33:59
【问题描述】:

我正在尝试为我的帖子创建一个带有图像字段的博客。我在 django 管理面板中有 imageupload 工作,但我的缩略图损坏了。如果我点击图片,我会收到以下 404 错误:

Using the URLconf defined in firstblog.urls, Django tried these URL patterns, in this order:

^$ [name='home']
^admin/

The current URL, images/heroimage/, didn't match any of these.

在我的 models.py 中有:

from django.db import models
from django.db.models import permalink


class posts(models.Model):

author = models.CharField(max_length = 45)
title = models.CharField(max_length = 100)
bodytext = models.TextField()
timestamp = models.DateTimeField()
image1 = models.ImageField(upload_to="images/heroimage/", default='')
category = models.ForeignKey('blog.Category', default='')


def __unicode__(self):
 return '%s' % self.title

@permalink
def get_absolute_url(self):
 return ('view_blog_post', None, { 'slug': self.slug })



class Category(models.Model):
title = models.CharField(max_length=100, db_index=True)
slug = models.SlugField(max_length=100, db_index=True)


def __unicode__(self):
 return '%s' % self.title

@permalink
def get_absolute_url(self):
 return ('view_blog_category', None, { 'slug': self.slug })

我想做的是让上传到帖子的图片显示在网站上。

这是我的 index.html,我尝试在其中将图像调用到帖子中。

  <div class="container">
        <h1>First Blog</h1>
    {% for post in posts %}
    <div class="posts">
        <p><a href="/images/heroimage/{{blog.slug}}"> <img src="{{blog.image1.url}}" /> {{ blog }}</a></p>
        <h2>{{ post.title }}</h2>
        <h3>Posted on {{ post.timestamp }} by {{ post.author }}</h3>
        <p> {{ post.bodytext }}</p>
    </div>
    <hr>
    {% endfor %}

    </div>

我创建的 django 项目名为 firstblog ,然后我有一个名为 blog 的应用程序。在我的项目文件夹“firstblog”的根目录中,我有一个图片文件夹,然后是一个名为 heroimage 的子文件夹。

谁能帮我搞定这个工作?

谢谢

【问题讨论】:

  • 尝试将 index.html 中的 {{blog.image1.url}} 重命名为 {{ post.image1.url }},因为 image1 是 Posts 的一个字段。
  • 你应该将帖子重命名为帖子。类名总是大写。

标签: python django http-status-code-404 brokenimage


【解决方案1】:

它被附加到您的 MEDIA_ROOT 设置中。 https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.models.FileField.upload_to

为上传的文件设置媒体根目录以检索文件,我举个例子:

# settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# models
class Blog(models.Model):
    main_image = models.ImageField(default='none/none.jpg', upload_to='blog'

# template
<img src="/media/{{ blog.main_image }}">

# media folder after
media/blog/imageuploaded.jpg
media/none/none.jpg  # This file was already created

上传到静态目录变化

MEDIA_ROOT = STATIC_ROOT or STATICFILES_DIRS[0]

虽然这绝对不推荐!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2017-10-28
    • 2023-03-25
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多