首页 > 解决方案 > 我在我的 django 代码中遇到了将图像代码上传到数据库中的问题?

问题描述

每当我尝试通过表单上传图像时,它都会给我一个错误,即多值字典键错误。GIVEN BELOW .....这个图像将显示在项目的另一端,比如说用户端。任何提示..___我还添加了我的 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/'

标签: pythondjango

解决方案


把它放在一个try块里看看

    try:
        s.dimage = request.FILES or None['photo']
    except TypeError:
        s.dimage = None

推荐阅读