我正在尝试运行简单的表单,但是我有成本,我没有使用django的forms.forms,而是直接从HTML生成表单。
好吧,我的表单仅具有1个文件字段和一个发布按钮,在该字段中我想添加一个.xlsx并从该文件中获取数据并将其注册到特定模型中,但这会给我以下错误:>
django.utils.datastructures.MultiValueDictKeyError: "'ar'"
acontinuacion我想向您展示如何构造代码,但我不明白为什么会出错,我也想给我一个关于如何获取输入中选择的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 %}
答案 0 :(得分:2)
您应将enctype="multipart/form-data"
属性添加到form
标记中:
<form action="#" method="POST" enctype="multipart/form-data">
请注意,如果request方法,则request.FILES仅包含数据 是POST,发布请求的具有属性 enctype =“ multipart / form-data”。否则,request.FILES将为空。