Загрузка файлов изображений
-
21-08-2019 - |
Вопрос
Не могли бы вы помочь мне заставить загрузку изображений работать с представлением с формами 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']