Django - 上传图片文件并存储图片

时间:2017-12-08 08:02:26

标签: python django

在我的自定义用户模型中,我需要一个字段来存储用户的照片个人资料。因此,我在模型中将字段photo_profile设置为ImageField

class User(AbstractBaseUser):

    photo_profile = models.ImageField()


class RegisterForm(forms.ModelForm):

    class Meta:
        model = User
        fields = [#fields are going to be shown here
            'photo_profile',
        ]

def register_view(request):
    title = "Register"
    form = RegisterForm(request.POST or None)
    print("hello")
    if form.is_valid():
        user = form.save(commit=False)
        password = form.cleaned_data['password']
        user.set_password(password)
        user.is_active = True
        user.last_login = timezone.now()
        user.save()
        login(request, user)
        return render(request, 'index/index.html', {"user": user})

    context ={
        "form": form,
        "title": title,
    }
    return render(request, 'user/loginRegister.html', context)

现在,如果我进入我的注册页面,将会有一个上传图像的按钮。

`<form method="post"action="" entype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" class="btn btn-default" title="{{ title }}"/>
</form>`

选择图像后,会显示图像。但是,当我点击提交按钮时,网页会询问&#34;字段(照片的字段)是必需的&#34;。

除了使用FileUploadForm解决此问题之外还有其他方法吗?在将photo_profile的类型更改为ImageField之前,可以创建用户。

提前致谢!

1 个答案:

答案 0 :(得分:1)

为了handle files in a form, you'll need to pass them in too

form = RegisterForm(data=(request.POST or None), files=(request.FILES or None))