Carga de archivos de imagen
-
21-08-2019 - |
Pregunta
Podría por favor ayudarme a conseguir carga de imágenes que trabaja en una vista con las formas de Django?
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)
Mi forma html ya contiene enctype="multipart/form-data"
Solución
Usted no parece ser la unión del presentar datos al formulario .
profile_form = ProfileForm(request.POST, request.FILES, instance=request.user.profile)
Otros consejos
¿Por qué no usar el proyecto -avatar Django (Te estoy asumiendo están pensando en añadir avatares de los usuarios a su proyecto, basado en el ejemplo)?
Tienen una solución bastante limpio con una etiqueta adicional que cambia el tamaño de la imagen antes de mostrarla primera vez. Almacenar la imagen original y definir los tamaños de imagen que desea aceptar en el sitio web y el resto se hace automagicamente para usted.
Esto es sólo una cuestión de seguir la docs .
No está utilizando el formulario de inicialización correcta en su puesto. En particular, se echa en falta request.FILES parámetro:
form = ProfileForm(request.POST, request.FILES)
después de lo anterior, el archivo cargado se puede recuperar de la matriz ARCHIVOS:
photo_file = request.FILES['photo']