繁体   English   中英

MultiValueDictKeyError Django

[英]MultiValueDictKeyError Django

我试图使简单的表单运行,但我有成本,我没有使用django的forms.forms,而是直接从HTML生成表单。

好吧,我的表单仅具有1个文件字段和一个发布按钮,在该字段中,我想添加一个.xlsx并从该文件获取数据并将其注册到特定模型中,但是它给了我以下错误:

django.utils.datastructures.MultiValueDictKeyError: "'ar'"

我想向您展示我如何构造代码,但我不明白为什么会出错,我也想给我一个关于如何获取我在输入文件中选择并注册的excel数据的想法它在BD:

视图:

from django.views.generic import View
from django.shortcuts import render,redirect
from condominio.models import *

class TestExcel(View):
    def post (self, request, *args, **kwargs):
        print (request.FILES)
        file = request.FILES['ar']
        return HttpResponse('this is post')
    def get(self, request, *args, **kwargs):
        return render(request ,'testing.html' ,{})

模板:

{% extends 'base.html' %}
{% load staticfiles %}
{% load static %}

{% block content %}

<div class="container">
    <div class="row">
  <form action="#" method="POST">
    {% csrf_token %}
    <div class="file-field input-field">
      <div class="btn">
        <span>File</span>
        <input name="ar" id = "ar" type="file" >
      </div>
      <div class="file-path-wrapper">
        <input class="file-path validate" type="text" >
      </div>
    </div>
    <button class="btn waves-effect waves-light" type="submit" name="action">Submit
    <i class="material-icons right">send</i>
  </button>
  </form>
    </div>
</div>


{% endblock %}

您应该将enctype="multipart/form-data"属性添加到form标签中:

<form action="#" method="POST" enctype="multipart/form-data">

摘自Django文档

请注意,仅当请求方法为POST并且发布请求的属性为enctype =“ multipart / form-data”时,request.FILES才会包含数据。 否则,request.FILES将为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM