html - 在我的表格中有一个图片上传部分。如果用户没有上传任何文件,那么它会给出 MultiValueDictKeyError。如何摆脱它?
问题描述
我正在开发一个基于 Django Web 的应用程序的项目。在这个项目中,有一个部分我通过 HTML 表单从用户那里获取信息。我添加了一个“图像上传”部分,但是当用户不上传任何文件时,它会给出 MultiValueDictKeyError 错误。我试过这个但不适合我。
这是错误部分:错误图像
这是我的 addpost.html 部分。它由一个表格组成,我通过它获取信息。
<form action="{% url 'addpost' %}" method='POST' enctype="multipart/form-data" novalidate>
{% include 'includes/messages.html' %}
{% csrf_token %}
{% if user.is_authenticated %}
<input type="hidden" name="user_id" value="{{user.id}}">
{% else %}
<input type="hidden" name="user_id" value="0">
{% endif %}
<div class="row ">
<div class="tex-center">
<div class="row">
<div class="col-md-6 text-left">
<div class="form-group name">
<input type="text" name="author" class="form-control" placeholder="Author"
{% if user.is_authenticated %} value="{{user.first_name}}" {% endif %} readonly>
</div>
</div>
<div class="col-md-6">
<div class="form-group name">
<input type="text" name="title" class="form-control" placeholder="title" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group name">
<input type="text" name="location" class="form-control" placeholder="location" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group name">
<input type="text" name="short_desc" class="form-control"
placeholder="Write short description" required>
</div>
</div>
<div class="col-md-12">
<div class="form-group message">
<textarea class="form-control" name="full_desc"
placeholder="Write full description"></textarea>
</div>
</div>
<input type="file" id="myFile" name="place_photo" required/>
<div class="col-md-12">
<div class="send-btn text-center">
<input type="submit" class="btn btn-outline-success mr-1" value="Send Post">
<a href="{% url 'dashboard' %}" class="btn btn-outline-danger">Cancel</a>
</div>
</div>
</div>
</div>
</div>
</form>
这是我接收 POST 数据的 views.py 文件
def add_post(request):
if request.method == "POST":
try:
is_private = request.POST['is_private']
except MultiValueDictKeyError:
is_private = False
author = request.POST['author']
title = request.POST['title']
user_id = request.POST.get('user_id')
location = request.POST['location']
short_desc = request.POST['short_desc']
full_desc = request.POST['full_desc']
place_photo = request.FILES['place_photo']
post = Post(author=author, user_id=user_id, title=title, location=location,
short_desc=short_desc,full_desc=full_desc, place_photo=place_photo)
post.save()
messages.success(request,"Your post uploaded successfully")
return render(request,'community/addpost.html')
这是我的 models.py 文件
class Post(models.Model):
author = models.CharField(max_length=100, default=' ')
title = models.CharField(max_length=150)
user_id = models.IntegerField(blank=True)
location = models.CharField(max_length=100, default=' ')
short_desc = models.CharField(max_length=255, default='In less than 250 words')
full_desc = models.TextField()
place_photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
added_date = models.DateTimeField(default=datetime.now,blank=True)
解决方案
推荐阅读
- javascript - 放入elementor modal弹出框显示“订阅确认”
- python - 熊猫条形图结合折线图显示了从 1970 年开始的时间轴
- node.js - 构建可重现的 reactJS 应用程序
- python - 为什么将列表与整数进行比较不会出错?
- angular - Angular 10 降级服务并在现有的 angularjs 服务中使用它
- javascript - SessionNotCreatedError:量角器自动化中的会话未创建错误
- ruby-on-rails - 类的未定义局部变量“图像”
- python - Python:Pandas 如何突出显示标题行
- python - 如何覆盖odoo11中的主要创建方法?
- python - AttributeError:“str”对象在 tkinter 标签中没有属性“tk”