Python 使用django上载文件
我正在使用django开发一个应用程序,用于在服务器上上载文件。我分别在forms.py和models.py文件中定义了表单和模型,如下所示: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
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()" />