Use*_*511 1 python django django-models
您好我想在admin django中制作上传图片,但是当我使用media_root和媒体网址图片无法上传时.这是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;
Run Code Online (Sandbox Code Playgroud)
setting.py
MEDIA_ROOT = '/static/images/upload/'
MEDIA_URL = '/upload/'
Run Code Online (Sandbox Code Playgroud)
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(),
})
Run Code Online (Sandbox Code Playgroud)
这是tamplate product.html
<img src="{{post.image.url}}" alt="" />
Run Code Online (Sandbox Code Playgroud)
你能帮我解决这个问题吗?
MEDIA_ROOT是上传图像的绝对路径,因此您应将设置更改为以下内容:
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images/upload')
Run Code Online (Sandbox Code Playgroud)
第二个问题是图像字段定义. upload_toargument是一个相对于MEDIA_ROOT/ 的路径MEDIA_URL.
image = models.ImageField(upload_to='product')
Run Code Online (Sandbox Code Playgroud)
最好添加一些strftime()格式以减少单个目录中的文件数量:
image = models.ImageField(upload_to='product/%Y/%m/%d')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5779 次 |
| 最近记录: |