django将媒体路径设置为模型中的默认图像

时间:2014-11-13 12:38:52

标签: django image filefield

我的项目结构:

MyProject/
    App1/
    App2/
    MyProject/
    Static/
        uploads/
            image.jpeg/

在我的设置中,我有:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
MEDIA_ROOT = os.path.join(BASE_DIR, '/static/uploads/')

我想将image.jpeg设置为默认个人资料图片

我的模特:

def get_upload_file_name(instance, filename):
    return "uploads/{}_{}".format(str(time()).replace('.','_'), filename)

class User(AbstractBaseUser, PermissionsMixin):
    thumbnail = models.FileField(upload_to=get_upload_file_name, default="image.jpeg")

这里我编写了一个方法get_upload_file_name,以便重复文件名不会出现任何错误。当用户更改其个人资料图片时,我希望将图像保存在同一目录中。

需要帮助......

1 个答案:

答案 0 :(得分:0)

您应该做的是使用Python为每个上传的个人资料图片创建一个新的用户名目录。这样,如果他们上传多个,每个都会覆盖最后一个。

至于显示默认图像,我会说你应该在你的模板中这样做。

{% if username.image == "" %}http://www.yoursite.com/your_image.jpeg{% else %} username.image {% endif %}

另一种方法是使用Javascript检测未找到的图像并显示默认值。

<img src="image.png" onError="this.onerror=null;this.src='/images/noimage.gif';" />