每当我尝试通过表单上传图像时,都会给我一个错误,这是多值字典键错误。给下面..... 并且此图像将显示在项目的另一侧,即用户侧。任何提示..___ i还添加了我的html页面的完整代码。...
MultiValueDictKeyError at /hosteladmin/messfood
'photo'
Request Method: POST
Request URL: http://127.0.0.1:8000/hosteladmin/messfood
Django Version: 2.2.4
Exception Type: MultiValueDictKeyError
Exception Value:
'photo'
Exception Location: C:\Users\lenovo\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\utils\datastructures.py in __getitem__, line 80
Python Executable: C:\Users\lenovo\AppData\Local\Programs\Python\Python37-32\python.exe
Python Version: 3.7.4
Python Path:
['D:\\django project\\hostel_final',
'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip',
'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs',
'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\lib',
'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32',
'C:\\Users\\lenovo\\AppData\\Roaming\\Python\\Python37\\site-packages',
'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages',
'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\win32',
'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\win32\\lib',
'C:\\Users\\lenovo\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages\\Pythonwin']
Server time: Mon, 11 Nov 2019 10:07:52 +0000
请帮助我,我将非常感谢
VIEWS FILE CODE:-
def messfood(request):
if request.method=="POST":
dn=request.POST['name']
dp=request.POST['price']
ft=request.POST['dfgtime']
fd=request.POST['sdday']
s=Fooddetials()
s.dimage = request.FILES["photo"]
s.dname=dn
s.dprice=dp
s.food_timing=ft
s.food_day=fd
s.save()
return render(request,'hosteladmin/messfood.html')
else:
return render(request,'hosteladmin/messfood.html')
HTML FORM CODE:-
{% extends 'hosteladmin/base.html' %}
{% block content %}
<div class="card">
<div class="card-header card-header-primary">
<h4 class="card-title">Add Mess Food Service</h4>
</div>
<div class="card-body">
<form action="{% url 'messfood' %}" method="post">
{% csrf_token %}
<div class="row">
<div class="col-md-12">
<label class="bmd-label-floating">Dish Image</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<input type="file" name="dimage">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group bmd-form-group">
<label class="bmd-label-floating">Dish Name</label>
<input type="text" class="form-control" name="name" required="">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group bmd-form-group">
<label class="bmd-label-floating">Dish Price</label>
<input type="text" class="form-control" name="price" required="">
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group bmd-form-group">
<label class="bmd-label-floating">Food Time</label><br>
<select class="form-control " name="dfgtime" data-style="btn btn-link" id="exampleFormControlSelect1">
<option value="1">BreakFast</option>
<option value="1">Lunch</option>
<option value="1">Dinner</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group bmd-form-group">
<label class="bmd-label-floating">Day</label><br>
<select class="form-control " name="sdday" data-style="btn btn-link" id="exampleFormControlSelect1">
<option value="1">Sunday</option>
<option value="1">Monday</option>
<option value="1">Tuesday</option>
<option value="1">Wednesday</option>
<option value="1">Thrusday</option>
<option value="1">Friday</option>
<option value="1">Saturday</option>
</select>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary pull-right">Add Detials</button>
<div class="clearfix"></div>
</form>
</div>
</div>
{% endblock %}
MODELS FILE CODE:-
class Fooddetials(models.Model):
dimage=models.ImageField(upload_to='fooddetails/')
dname=models.CharField(max_length=200)
dprice=models.CharField(max_length=200)
food_timing=models.CharField(max_length=200)
food_day=models.CharField(max_length=200,default="")
ROOT DIRECTORY IN SETTINGS OF THE PROJECT:-
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
答案 0 :(得分:1)
将其放在try块中,然后查看
try:
s.dimage = request.FILES or None['photo']
except TypeError:
s.dimage = None