2 votes

Comment afficher la photo de profil modifiée dans django

Je peux télécharger la photo de profil mais je ne peux pas la modifier.

Le formulaire se remplit avec l'option de recherche d'images, mais lorsque je clique sur enregistrer, il n'est pas mis à jour dans le modèle, alors qu'il fonctionne correctement dans l'administration.

views.py

def create_form(request):
        form = AlbumForm(request.POST or None, request.FILES or None)
        if form.is_valid():
            album = form.save(commit=False)
            album.user = request.user
            album.image= request.FILES['image']
            album.save()
            return render(request, 'about.html', {'album': album})
        context = {
            "form": form,
        }
        return render(request, 'create_form.html', context)

def profile_edit(request):
    if request.method == 'POST':
        form = AlbumForm(request.POST, instance=request.user.album)
        if form.is_valid():
            album = form.save(commit=False)
            album.user = request.user
            form.save()
            return redirect(reverse('about'))
    else:
        form = AlbumForm(instance=request.user.album)
        args = {'form': form}
        return render(request, 'profile_edit.html', args)

models.py

class Album(models.Model):
    user = models.OneToOneField(User)
    image = models.FileField()

forms.py

class AlbumForm(forms.ModelForm):
    class Meta:
        model = Album
        fields = ['image']

profil_edit.html

{%  extends 'base.html' %}
{%  block   content %}

<form action="{% url 'profile_edit' %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="save btn btn-default">save</button>
</form>
<div>
      <img src="{{ user.album.image.url }}" class="img-responsive">
</div>

{%  endblock    %}

1voto

itzMEonTV Points 13849

Essayez ceci

AlbumForm(request.POST, request.FILES, instance=request.user.album)

0voto

slurms Points 438

Vous devez ajouter request.FILES à votre AlbumForm dans la vue d'édition du profil.

0voto

Mubariz Feyziyev Points 352

Si vous téléchargez un fichier, vous devez utiliser request.Files Pour plus d'informations, consultez ce lien

https://docs.djangoproject.com/en/1.10/topics/http/file-uploads/#basic-file-uploads

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X