我在/ accounts / upload_save /出现错误,AttributeError 'WSGIRequest'对象没有属性'cleaning_data'。我正在制作文件上传系统。如果我选择文件并放入“发送”按钮,所选图像将被发送到模型。但是现在,当我选择图像并放入“发送”时“按钮,错误发生了。 我在views.py中写道
@login_required
@csrf_exempt
def upload_save(request):
form = UserImageForm(request.POST, request.FILES)
if request.method == "POST" and form.is_valid():
data = form.save(commit=False)
data.user = request.user
data.image = request.cleaned_data['image']
data.save()
return render(request, 'photo.html')
else:
form = UserImageForm()
return render(request, 'profile.html', {'form': form})
index.html中的
<main>
<div class="detailimg col-xs-8">
<div class="relative_ele">
<div class="container" id="photoform">
{% if form.errors %}
<div class="alert alert-danger" role="alert">
<p>At least 1 picture should be selected</p>
</div>
{% endif %}
<form action="/accounts/upload_save/" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="input-group">
<label class="input-group-btn" style="width: 80px;">
<span class="file_select btn-lg">
File Select1
<input type="file" name="image">
</span>
</label>
<input type="text" class="form-control" readonly="">
</div>
<div class="input-group">
<label class="input-group-btn" style="width: 80px;">
<span class="btn-lg file_select">
File Select2
<input type="file" name="image2">
</span>
</label>
<input type="text" class="form-control" readonly="">
</div>
<div class="form-group">
<input type="hidden" value="{{ p_id }}" name="p_id" class="form-control">
</div>
<div class="col-xs-offset-2">
<div class="form-group">
<input type="submit" value="SEND" class="form-control">
</div>
</div>
</form>
</div>
</div>
</div>
</main>
我真的不明白为什么会发生这种错误。我在views.py中重写了
@login_required
@csrf_exempt
def upload_save(request):
if request.method == "POST":
form = UserImageForm(request.POST, request.FILES)
if form.is_valid():
data = form.save(commit=False)
data.user = request.user
data.image = form.cleaned_data['image']
data.save()
else:
print(form.errors)
else:
form = UserImageForm()
return render(request, 'registration/photo.html', {'form': form})
但同样的错误发生。我该如何解决这个问题?我的代码中的WSGIRequest是哪一点?
答案 0 :(得分:0)
request.cleaned_data['image']
无效,您应该在第二个示例中使用form.cleaned_data
。
如果你得到相同的AttributeError
,那么你还没有重新启动服务器并仍在运行旧代码。
您可能根本不需要data.image = form.cleaned_data['image']
行。模型表单将负责设置图像字段。使用commit=False
保存后,您只需要更改表单中未包含的字段。
if request.method == "POST" and form.is_valid():
data = form.save(commit=False)
data.user = request.user
data.save()