Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 图像未在Django中更新_Python_Django_Django Models_Django Forms - Fatal编程技术网

Python 图像未在Django中更新

Python 图像未在Django中更新,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,请帮帮我。我正在尝试更新个人资料,其中用户名和电子邮件已更新,但图像未更新。我的代码是 profile.html <form method="POST" enctype="multipart/form-data"> {% csrf_token %} <fieldset class="form-group"> <legend class=&quo

请帮帮我。我正在尝试更新个人资料,其中用户名和电子邮件已更新,但图像未更新。我的代码是

profile.html

    <form method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">Profile Info</legend>
            {{ u_form|crispy }}
            {{ p_form|crispy }}
        </fieldset>
        <br>
        <div class="form-group">
            <button class="btn btn-outline-info" type="submit">Update</button>
        </div>
    </form>
forms.py

@login_required
def profile(request):
    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.FILES, instance=request.user.profile)
        if u_form.is_valid() and p_form.is_valid():
            u_form.save()
            p_form.save()
            messages.success(request, f'Account Successfully Updated!')
            return redirect('profile')

    else:
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST, instance=request.user.profile)

    context = {
        'u_form' : u_form,
        'p_form' : p_form
    }
    return render(request, 'users/profile.html', context)
class ProfileUpdateForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ['image']

我相信你的问题在于views.py

首先,检查检索视图的方法是否为POST。如果不是,则您正在使用不存在的POST数据初始化表单。我已经在下面为你简化了

其次,您没有将POST信息传递给第二个表单,只传递文件部分。您是否尝试过将p_表单更改为采用以下两个参数

@login_required
def profile(request):
    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
        if u_form.is_valid() and p_form.is_valid():
            u_form.save()
            p_form.save()
            messages.success(request, f'Account Successfully Updated!')
            return redirect('profile')

    else:
        u_form = UserUpdateForm(instance=request.user)
        p_form = ProfileUpdateForm(instance=request.user.profile)

    context = {
        'u_form' : u_form,
        'p_form' : p_form
    }
    return render(request, 'users/profile.html', context)

我们能看到风景和形状吗?请将代码作为对原始帖子的编辑发布,而不是评论。感谢回复我已更新了视图。因此,您在这里遇到的问题是,当您不更改图像并提交表单时,图像设置为“无”。是这样吗?不,问题是当我更新个人资料时,用户名和电子邮件会更新,但图像不会更新。我已经再次检查了我的代码,在用您的代码更新后,它最终会工作。谢谢你的帮助。