gpt4 book ai didi

python - 使用 django 表单处理图像

转载 作者:行者123 更新时间:2023-12-01 09:00:19 25 4
gpt4 key购买 nike

我正在尝试使用 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"。此外,您还可以在此处找到工作示例上传表单

https://github.com/miletskiy/FortyTwoTestTask/blob/master/apps/hello/templates/edit_applicant.html#L20

关于python - 使用 django 表单处理图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52503249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com