【问题标题】:Handling images using django forms使用 django 表单处理图像
【发布时间】:2018-09-25 16:53:40
【问题描述】:

我正在尝试使用 django 表单上传图像,然后将其分配给我的模型对象图像字段。

forms.py

class MemberRegistrationForm(forms.ModelForm):
  birthday=forms.DateField(input_formats=settings.DATE_INPUT_FORMATS)
  class Meta:
       model=Member
       fields=('birthday','photo',)

models.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)

urls.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="">

views.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,
          })

【问题讨论】:

    标签: python django image file


    【解决方案1】:

    您必须在 html 标记中指定 enctype="multipart/form-data"。 此外,您可以在此处找到工作示例上传表单

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

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 2011-03-29
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多