找不到在图像字段中设置的默认图像

时间:2019-12-18 23:21:55

标签: python django

在下面的配置文件模型中,在图像字段中为注册用户设置了默认图像。 Django媒体目录Console.WriteLine(("Message #{0}: {1}"), nMessageId, msg); 中提供了一个默认图像,将寄存器视图表单保存在视图中(第10行)后,将输出一条错误消息,指出找不到该图像的文件或目录。这是因为Django在其中查找图像的目录是错误的。它在路径media/profile_pics中而不是C:\\dev\\blogger\\media\\default.png

中查找

我花了好几个小时才尝试修复它,但无济于事。

下面的源代码。

错误:

C:\\dev\\blogger\\media\\profile_pics\\default.png

目录

FileNotFoundError at /account/register

[Errno 2] No such file or directory: 'C:\\dev\\blogger\\media\\default.png

型号:

C:.
├───.vscode
├───blog
│   ├───migrations
│   │   └───__pycache__
│   └───__pycache__
├───blogger
│   ├───static
│   │   └───blog
│   └───__pycache__
├───media
│   └───profile_pics
├───templates
│   ├───blog
│   │   └───post
│   └───users
├───users
│   ├───migrations
│   │   └───__pycache__
│   └───__pycache__

观看次数:

from django.db import models
from django.contrib.auth.models import User
from PIL import Image

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.png', upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

    # Override save nethod. Resize images for scalability
    def save(self, *args, **kwargs):

        super().save(*args, **kwargs)

        img = Image.open(self.image.path)

        if img.height > 300 or img.width > 300:
            resize_img = (300, 300)
            img.thumbnail(resize_img)
            img.save(self.image.path)

        # [TODO] Delete older images when updated with new images

1 个答案:

答案 0 :(得分:0)

仅指定文件将在您的媒体文件夹中查找,如果您的默认图片位于media / profile_pics中,则将默认设置为profile_pics/default.png