python - 使用 django 表单处理图像

标签 python django image file

我正在尝试使用 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/

相关文章:

python - 在列表中存储的数字序列中查找丢失的文件名

Python:Tkinter 消息框 - 错误处理

python - 在多个数据集上运行相同的测试

python - Django Booleanfiedl Checkbox 和 Label 显示为两行

javascript - 将第二个文本框输入文本值合并为现有创建图像中的新行

php - 如何防止 imagecreatefrom 创建静态 gif - PHP

python - 使用 AngularJS 上传文件失败

Django:基于空间点的 m2m 查询返回空字典 - 但应包含结果

android - 获取 token 身份验证 View 时出现 Django REST HTTP 400 错误

Java Swing - 为什么我无法将图像添加到 Jpanel?