【问题标题】:django update user formdjango更新用户表单
【发布时间】:2021-12-01 06:13:26
【问题描述】:

这里是表单的问题,除了头像字段之外的所有字段都被应用。我看不出原因。

表格

class UserEditForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['username', 'name', 'email', 'bio', 'avatar']
        exclude = ()
        widgets = {
            'avatar': forms.FileInput(),
            'bio': forms.Textarea(),
        }

浏览量

@login_required(login_url='login')
def edit_profile(request):
    user = request.user
    form = UserEditForm(instance=user)

    if request.method == 'POST':
        form = UserEditForm(request.POST, request.FILES, instance=user)
        if form.is_valid():
            form.save()
            return redirect('get_author', pk=user.id)
    return render(request, 'account/edit_profile.html', {'form': form})

模板

<form class="form-horizontal" role="form" method="POST" action="">
                {% csrf_token %}

                <div class="col-md-3">
                    <div class="text-center">
                        <img src="{{ request.user.avatar.url }}" class="avatar img-circle" alt="avatar"
                             style="width: 100px; height: 100px;">
                        <h6>Upload a different photo...</h6>
                        {{ form.avatar }}
                    </div>
                </div>

...其他字段

感谢您的帮助

【问题讨论】:

    标签: django forms


    【解决方案1】:

    您需要更新模板代码并使用表单标签中的“multipart/form-data”将文件作为请求对象的一部分上传。

    <form class="form-horizontal" role="form" method="POST" action="" enctype="multipart/form-data">
                    {% csrf_token %}
                    <div class="col-md-3">
                        <div class="text-center">
                            <img src="{{ request.user.avatar.url }}" class="avatar img-circle" alt="avatar"
                                 style="width: 100px; height: 100px;">
                            <h6>Upload a different photo...</h6>
                            {{ form.avatar }}
                        </div>
                    </div>
    </form>
    

    【讨论】:

      【解决方案2】:

      您需要指定enctype="…" attribute [mozilla-dev] 的形式:这解释了文件将如何编码:

      <form enctype="multipart/form-data" class="form-horizontal" role="form" method="POST" action="">
         …
      </form>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-24
        • 2015-08-10
        • 2012-03-06
        • 1970-01-01
        • 2016-12-30
        • 2020-06-21
        • 2018-12-14
        • 2013-09-19
        相关资源
        最近更新 更多