9

您能帮我在 Django 表单的视图上上传图片吗?

模型.py

class User_Profile(models.Model):
    user = models.OneToOneField(User, unique=True, related_name='profile')
    photo  = models.ImageField(upload_to = 'profiles/', null=True, blank=True)

表格.py

class ProfileForm(forms.ModelForm):
        class Meta:
            model = User_Profile
            exclude = ('user')

视图.py

    if request.method == 'POST':
        profile_form = ProfileForm(request.POST, instance=request.user.profile)

        if profile_form.is_valid():
            profile_form.save()
            return HttpResponseRedirect('/panel/correct/')

    else:
        profile_form = ProfileForm(instance=request.user.profile)

我的 html 表单已经包含enctype="multipart/form-data"

4

3 回答 3

16

您似乎没有将文件数据绑定到表单

profile_form = ProfileForm(request.POST, request.FILES, instance=request.user.profile) 
于 2009-07-03T11:11:46.157 回答
7

为什么不使用django-avatar项目(我假设您正在考虑将用户头像添加到您的项目中,基于示例)?

他们有一个非常简洁的解决方案,带有一个额外的标签,可以在第一次显示之前调整图像的大小。您存储原始图像并定义您希望在网站上接受的图像尺寸,其余的会自动为您完成。

于 2009-07-03T10:53:05.967 回答
3

这只是遵循文档的问题。

您没有在帖子中使用正确的表单初始化。特别是您缺少request.FILES参数:

 form = ProfileForm(request.POST, request.FILES)

在上面上传的文件可以从 FILES 数组中检索到:

 photo_file = request.FILES['photo']
于 2009-07-03T18:02:26.160 回答