【问题标题】:Can't upload image in django use MEDIA_ROOT and MEDIA_URL无法在 django 中使用 MEDIA_ROOT 和 MEDIA_URL 上传图片
【发布时间】:2015-07-01 01:43:53
【问题描述】:

您好,我想在 django 管理员中上传图片,但是当我使用 media_root 和媒体 url 图片时无法上传。这是model.py

class Product(models.Model):
    category        = models.ForeignKey('Category')
    userprofile     = models.ForeignKey('UserProfile')
    title           = models.CharField(max_length=50)
    price           = models.IntegerField()
    image           = models.ImageField(upload_to=settings.MEDIA_ROOT)
    description     = models.TextField()
    created_date    = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title;

setting.py

MEDIA_ROOT  = '/static/images/upload/'
MEDIA_URL   = '/upload/'

view.py

def home(request):
    posts = Product.objects.filter(created_date__isnull=False)
    return render(request, 'kerajinan/product_list.html', {
        'posts'         : posts,
        'categories'    : Category.objects.all(),
    })

这是 tamplate product.html

<img src="{{post.image.url}}" alt="" />

你能帮我解决这个问题吗?

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    MEDIA_ROOT 是上传图片的绝对路径,因此您应该将设置更改为以下内容:

    MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images/upload')
    

    第二个问题是图像字段定义。 upload_to 参数是 relativeMEDIA_ROOT/MEDIA_URL 的路径。

    image = models.ImageField(upload_to='product')
    

    而且最好加一些strftime()格式,减少单个目录下的文件数量:

    image = models.ImageField(upload_to='product/%Y/%m/%d')
    

    【讨论】:

    猜你喜欢
    • 2011-06-16
    • 2011-07-27
    • 2023-01-09
    • 1970-01-01
    • 2013-07-22
    • 2023-03-06
    • 1970-01-01
    • 2012-03-31
    相关资源
    最近更新 更多