Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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
Python 使用django上载文件_Python_Django_File Upload - Fatal编程技术网

Python 使用django上载文件

Python 使用django上载文件,python,django,file-upload,Python,Django,File Upload,我正在使用django开发一个应用程序,用于在服务器上上载文件。我分别在forms.py和models.py文件中定义了表单和模型,如下所示: from django import forms class DocumentForm(forms.Form): docfile = forms.FileField( label='' ) 在models.py中: from django.db import models # Create your models h

我正在使用django开发一个应用程序,用于在服务器上上载文件。我分别在forms.py和models.py文件中定义了表单和模型,如下所示:

from django import forms

class DocumentForm(forms.Form):
    docfile = forms.FileField(
        label=''
    )
在models.py中:

from django.db import models

# Create your models here.

    class Document(models.Model):
        docfile = models.FileField(upload_to='targetdir')
在我的HTML文件中,我的表单是:

    <form  class="myclass" action="submit" method="post">
    {% csrf_token %}

    <p>
                {{ form.docfile.errors }}
                {{ form.docfile }}
</p>


        <br />
            <input font-size="50px" style="zoom:1.5"  class="myclass" dir="rtl" type="submit" value="upload"  id="button" class="top-menu" onclick="pythonhandler()" />
错误。my views.py文件:

def pythonhandler(request):

    if request.method == 'POST':
        try:
                    data = request.FILES.get('docfile') 
                    with open(os.getcwd()+'/mydirectory/'+request.FILES['docfile'].name, 'wb+') as destination:
                        for chunk in request.FILES['docfile'].chunks():
                            destination.write(chunk)

我执行了中提到的步骤,并提出了问题,但我再次收到此错误

我的HTML文件中的表单标记中缺少enctype=multipart/form data命令。因此,我在HTML文件中的表单必须如下所示:

<form  class="myclass" action="submit" enctype="multipart/form-data" method="post">
    {% csrf_token %}

    <p>
                {{ form.docfile.errors }}
                {{ form.docfile }}
</p>
            <input type="submit" value="upload" id="button" class="top-menu" onclick="pythonhandler()" />
在您的视图功能中

def pythonhandler(request):
data = DocumentForm(request.POST, request.FILES)
在你的html文件中

<form  class="myclass" action="submit" enctype="multipart/form-data" method="post">
    {% csrf_token %}

    <p>
                {{ form.docfile.errors }}
                {{ form.docfile }}
</p>
            <input type="submit" value="upload" id="button" class="top-menu" onclick="pythonhandler()" />

请你能更具体地介绍一下你的html表单和views.py吗?你读过这个吗?也许会有用。我编辑了我的问题。我读过你提到的链接,我认为每一件事都是这样的例子。但是我不知道这个错误。请注意,request.FILES仅在请求方法为POST并且请求的POST属性为enctype=multipart/form data时才包含数据。所以你在表单中错过了它tagI setted enctype=我表单中的多部分/表单数据,现在一切都好了!问题是由于我的表单中的enctype=multipart/form数据属性造成的。视图函数是ok的。jsut给出了一个较小的方法。不管怎么说,这对我很有帮助
<form  class="myclass" action="submit" enctype="multipart/form-data" method="post">
    {% csrf_token %}

    <p>
                {{ form.docfile.errors }}
                {{ form.docfile }}
</p>
            <input type="submit" value="upload" id="button" class="top-menu" onclick="pythonhandler()" />