Обработка изображений с использованием форм Django - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь загрузить изображение с помощью форм 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,
          })

1 Ответ

0 голосов
/ 25 сентября 2018

Вы должны указать enctype="multipart/form-data" в HTML-разметке.Также вы можете найти форму загрузки примера работы здесь

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...