我有一个配置文件更新表单,可以更新名称,但不会更新图像。我不知道为什么。我不确定基于类的视图在哪里更新名称...我知道你需要清理你的图像,但首先我要尝试上传它。
views.py
class UserDetailUpdateView(LoginRequiredMixin, UpdateView):
form_class = UserDetailChangeForm
template_name = 'accounts/detail-update-view.html'
def get_object(self):
return self.request.user
def get_context_data(self, *args, **kwargs):
context = super(UserDetailUpdateView, self).get_context_data(*args, **kwargs)
context['title'] = 'Change Your Account Details'
return context
def get_success_url(self):
return reverse("account:home")
在forms.py中,我尝试创建下面的代码,但它返回一个NoneType。
def clean_avatar(self):
avatar = self.cleaned_data['avatar']
forms.py
class UserDetailChangeForm(forms.ModelForm):
full_name = forms.CharField(label='Name', required=False, widget=forms.TextInput(attrs={"class": 'form-control'}))
class Meta:
model = User
fields = ['full_name','avatar']
HTML
<input type="file" name="avatar" id="id_avatar">
<button type='submit' class='btn btn-default my-3'>Save</button>
models.py
class User(AbstractBaseUser):
email = models.EmailField(max_length=255, unique=True)
full_name = models.CharField(max_length=255, blank=True, null=True)
avatar = models.ImageField(upload_to='images/', blank=True)
...
答案 0 :(得分:1)
您需要在HTML中指定表单enctype
以进行文件上传:
<form method="post" enctype="multipart/form-data">
<input type="file" name="avatar" id="id_avatar">
<button type='submit' class='btn btn-default my-3'>Save</button>
</form>