Вопрос

Не могли бы вы помочь мне заставить загрузку изображений работать с представлением с формами Django?

Модели.py

class User_Profile(models.Model):
    user = models.OneToOneField(User, unique=True, related_name='profile')
    photo  = models.ImageField(upload_to = 'profiles/', null=True, blank=True)

Формы.py

class ProfileForm(forms.ModelForm):
        class Meta:
            model = User_Profile
            exclude = ('user')

Просмотры.py

    if request.method == 'POST':
        profile_form = ProfileForm(request.POST, instance=request.user.profile)

        if profile_form.is_valid():
            profile_form.save()
            return HttpResponseRedirect('/panel/correct/')

    else:
        profile_form = ProfileForm(instance=request.user.profile)

Моя html-форма уже содержит enctype="multipart/form-data"

Это было полезно?

Решение

Кажется, ты не привязка данных файла к форме.

profile_form = ProfileForm(request.POST, request.FILES, instance=request.user.profile) 

Другие советы

Почему бы не использовать Джанго-аватар проект (я предполагаю, что вы думаете о добавлении аватаров пользователей в свой проект, исходя из примера)?

У них есть довольно изящное решение с дополнительным тегом, который изменяет размер изображения перед его первым показом.Вы сохраняете исходное изображение и определяете размеры изображения, которые вы хотите принять на веб-сайте, а все остальное делается за вас автоматически.

Это всего лишь вопрос следования документы.

Вы не используете правильную инициализацию формы в своем сообщении.В частности, тебя не хватает запрос.ФАЙЛЫ параметр:

 form = ProfileForm(request.POST, request.FILES)

после вышеизложенного загруженный файл можно получить из массива FILES:

 photo_file = request.FILES['photo']
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top