我正在尝试使用 django 表单上传图像,然后将其分配给我的模型对象图像字段。
表单.py
class MemberRegistrationForm(forms.ModelForm):
birthday=forms.DateField(input_formats=settings.DATE_INPUT_FORMATS)
class Meta:
model=Member
fields=('birthday','photo',)
模型.py
class Member(models.Model):
user=models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
birthday=models.DateField(blank=True,null=True)
photo=models.ImageField(upload_to='account/%Y/%m/%d',blank=True)
def __str__(self):
return "{} /'s profile ".format(self.user.username)
url.py
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
解析表单页面
<form class="" action="." method="post">
{{form.as_p}}
{{form_member.as_p}}
{% csrf_token %}
<input type="submit" name="" value="Create my account">
</form>
显示页面
<img width="90px;" height="180px;"src="{{member.photo.url}}" alt="">
View .py
我猜问题就在这里。我无法从表单中提取上传的图像并将其分配给我的模型对象字段
def user_signup(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
form_member=MemberRegistrationForm(request.POST,request.FILES)
if form.is_valid() and form_member.is_valid():
user=form.save(commit=False)
user.set_password(
form.cleaned_data['password']
)
user.save()
member=Member.objects.create(user=user,
photo=request.FILES['photo'], #HERE I'M NOT SURE IF THIS THE RIGHT WAY OR NOT
birthday=form_member.cleaned_data['birthday'])
return render(request,
'account/registeration_done.html',
{'user':user,
'member':member,
'form':form,
'form_member':form_member,
})
最佳答案
您必须在 html 标记中指定 enctype="multipart/form-data"
。
此外,您还可以在此处找到工作示例上传表单
关于python - 使用 django 表单处理图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52503249/