如何在 django 中显示编辑后的头像

Posted

技术标签:

【中文标题】如何在 django 中显示编辑后的头像【英文标题】:How to display the edited profile picture in django 【发布时间】:2017-08-29 15:08:58 【问题描述】:

我可以上传个人资料图片,但我无法编辑它

我有使用图像浏览选项填充的表单,但是当我单击保存时,它实际上并没有在模板中更新。但它在管理员中工作正常

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']

profile_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    %

【问题讨论】:

【参考方案1】:

试试这个

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

【讨论】:

【参考方案2】:

您需要在个人资料编辑视图中将request.FILES 添加到您的AlbumForm

【讨论】:

【参考方案3】:

如果你上传文件,你必须使用request.Files 阅读此链接了解更多信息

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

【讨论】:

以上是关于如何在 django 中显示编辑后的头像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 管理列表显示页面中编辑 ManyToManyField?

基于vue-cropper的上传裁剪后的头像

在 Django 中应用折扣后如何计算总数?

Django-admin:如何在记录更改列表中显示指向对象信息页面的链接而不是编辑表单?

如何选择一张图片来设置头像

如何在 Django Summernote 中显示编程片段的代码块?