arquivos de imagem upload
-
21-08-2019 - |
Pergunta
Você poderia por favor me ajude para chegar envio de imagens a trabalhar em uma exibição com Django formas?
Models.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)
Forms.py
class ProfileForm(forms.ModelForm):
class Meta:
model = User_Profile
exclude = ('user')
Views.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)
A minha forma de html já contém enctype="multipart/form-data"
Solução
Você não parecem estar ligação do dados do arquivo para a forma .
profile_form = ProfileForm(request.POST, request.FILES, instance=request.user.profile)
Outras dicas
Por que não usar o href="http://github.com/ericflo/django-avatar/tree/master" rel="noreferrer"> projeto (eu estou supondo que você está pensando em adicionar avatares de usuários ao seu projeto, com base no exemplo)?
Eles têm uma solução bastante elegante com uma etiqueta extra que redimensiona a imagem antes de exibi-lo pela primeira vez. Você armazena a imagem original e definir os tamanhos de imagem que você deseja aceitar no site eo resto é feito automagicamente para você.
Esta é apenas uma questão de seguir o docs .
Você não está usando a inicialização forma correta em seu post. Em particular, você está perdendo request.FILES parâmetro:
form = ProfileForm(request.POST, request.FILES)
após o acima O arquivo pode ser recuperado a partir da matriz FILES:
photo_file = request.FILES['photo']