0

在我的应用程序中,用户可以更改他们的个人资料数据,例如全名、性别、个人资料图片和其他内容。问题是当用户想要保留相同的个人资料图片并且文件输入为空时。在我看来,我如何支持这一点。

这是我的 html updateProfile.html

<form action="{% url 'updateprofile' %}" enctype="multipart/form-data" method="POST">{% csrf_token %}
  <input type="file" id="logofile" name="avatar" accept="image/gif, image/jpeg, image/png" value="">
  <input type="text"name="full_name">
  <input type="date"name="birthdate">
</form>

这是我的views.py updateprofile

def updateprofile(request):
    #HERE IS WHERE I CHECK IF I CHANGE THE IMAGE OR NOT BUT THIS NOT WORKS IF THE FILE INPUT IS EMPTY
    if request.FILES['avatar']:
        avatar = request.FILES['avatar']

    full_name=request.POST['full_name']
    birth_date= request.POST['birthdate']

    c = user.objects.get(id=request.session['account_id'])
    c.full_name = full_name
    c.avatar = avatar
    c.save()
    return redirect('userprofile')

如果我在文件输入中更改文件,一切正常。但是,如果我不上传新图像并将文件输入保留为空白,则会出现错误。如何检查 POST 请求中是否有文件?请帮忙

4

1 回答 1

1

您可以使用它if request.FILES.get('avatar')来代替if request.FILES['avatar']不会引发 KeyError。

于 2018-01-12T18:01:24.740 回答