在下面的配置文件模型中,在图像字段中为注册用户设置了默认图像。
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
答案 0 :(得分:0)
仅指定文件将在您的媒体文件夹中查找,如果您的默认图片位于media / profile_pics中,则将默认设置为profile_pics/default.png