@liss666-netizen

Django как загрузить изображение через форму?

view.py
class TagCreate(View):
    def get(self, request):
        form = TagForm()
        return render(request, 'blog/tag_create.html', context ={'form' : form})

    def post(self , request):
        bound_form = TagForm(request.POST)
        if bound_form.is_valid():
            new_tag = bound_form.save()
            return redirect(new_tag)
        return render(request, 'blog/tag_create.html', context ={'form' : bound_form})

model.py
class Tag(models.Model):
    title = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50, unique=True)
    image = models.ImageField(upload_to='cat/', blank=True, null=True,)

    def get_absolute_url(self):
        return reverse('tag_detail_url', kwargs={'slug':self.slug})

    def __str__(self):
        return '{}'.format(self.title)

form.py
from django.core.exceptions import ValidationError

class TagForm(forms.Form):
    title = forms.CharField(max_length=50)
    slug = forms.CharField(max_length=50)
    #image = forms.ImageField()

    title.widget.attrs.update({'class' : 'form-control'})
    slug.widget.attrs.update({'class' : 'form-control'})
    #image.widget.attrs.update({'class' : 'form-input'})

    def clean_slug(self):
        new_slug = self.cleaned_data['slug']

        if new_slug == 'create':
            raise ValidationError([ValidationError(_('Error 1'), code='error1'),])
        return new_slug

    def save(self):
        new_tag = Tag.objects.create(
            title = self.cleaned_data['title'],
            slug = self.cleaned_data['slug'],
            #image = self.cleaned_data['image']
                )
        return new_tag
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы