Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django表单返回form.u是否有效False_Django_Forms - Fatal编程技术网

Django表单返回form.u是否有效False

Django表单返回form.u是否有效False,django,forms,Django,Forms,这一定是一个基本的问题,但我对Djnago很陌生,我正在努力学习表单是如何工作的。我在不同的网站和论坛上浏览过,但我还没有理解我做错了什么 这是我的表格: class UploadCSVForm(forms.Form): csv_file = forms.FileField() 这是一个非常简单的表单,用于上传CSV文件 这是我的看法: def layer_create(request, template='layers/layer_create.html'): if request

这一定是一个基本的问题,但我对Djnago很陌生,我正在努力学习表单是如何工作的。我在不同的网站和论坛上浏览过,但我还没有理解我做错了什么

这是我的表格:

class UploadCSVForm(forms.Form):
   csv_file = forms.FileField()
这是一个非常简单的表单,用于上传CSV文件

这是我的看法:

def layer_create(request, template='layers/layer_create.html'):
  if request.method == 'POST':

    form = UploadCSVForm(request.POST, request.FILES)
    #print form.is_bound  # THIS PRINTS TRUE
    #print (request.FILES['csv']) # THIS PRINTS THE FILE IN THE MEMORY

    if form.is_valid():
        print ("valid")
    else:
        print ("not valid")
        out = {'success': False}

    return HttpResponse('test site')
这是我模板中的表单:

<form id="file-uploader" method="post" enctype="multipart/form-data" action="{% url "layer_create" %}">
      <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
      <input type="file" id="file-input" name="csv" />
      <button type="submit" id="upload-button" class="btn btn-danger">Upload</button>
</form>

上传
使用函数
is_-bound
我看到表单上有实际的数据绑定。 当我打印:
request.FILES['csv']
时,我可以看到上传到内存中的文件名


但是我仍然得到
form.is\u valid=False
,没有ant错误或警告。

您已经在模板
csv
中命名了字段,但是表单希望它被称为
csv\u文件

通常,您应该让Django输出模板中的字段,这样可以避免类似的问题。(出错后重新显示字段时,通常也会预先填充字段,但出于浏览器安全原因,文件字段不会这样做。)


您已经在模板
csv
中命名了该字段,但表单希望将其命名为
csv\u file

通常,您应该让Django输出模板中的字段,这样可以避免类似的问题。(出错后重新显示字段时,通常也会预先填充字段,但出于浏览器安全原因,文件字段不会这样做。)


您可以执行
print(form.errors)
来打印错误的确切内容。谢谢那很有趣。我发现:
  • csv\u file
    • 这个字段是必需的。
它似乎发现该字段是空的。但我认为这是我上传文件的地方。有什么线索可以解释为什么会发生这种情况吗?您可以执行
print(form.errors)
来打印错误的确切内容。谢谢那很有趣。我发现:
  • csv\u file
    • 这个字段是必需的。
它似乎发现该字段是空的。但我认为这是我上传文件的地方。知道为什么会这样吗?谢谢。就这样。在模板中输出字段是什么意思?我怎么做?谢谢。就这样。在模板中输出字段是什么意思?我该怎么做?
{{ form.csv_file }}