【发布时间】:2018-03-15 16:24:12
【问题描述】:
晕,我正在尝试使用文件字段上传文件。但我总是失败。当语句form.errors.as_data() 执行时,浏览器返回'tempfile'。我已经尝试从 django 文档和一些 django 参考资料中找到解决方案。但是,还是解决不了。 ;(
这是我的观点.py
def dataprocessing(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
import pdb; pdb.set_trace()
newdoc = Document(docfile=request.FILES['myfile'])
newdoc.save()
#Redirect to the dataprocessing after POST
#return render(request, 'dataprocessing.html')
return HttpResponse("success")
else:
return HttpResponse(form.errors.as_data())
else:
import pdb; pdb.set_trace()
form = DocumentForm() #A empty, unbound form
return render(request, 'dataprocessing.html', {'form': form})
models.py
class Document(models.Model):
docfile = models.FileField(upload_to='documents/%Y/%m/%d')
forms.py
class DocumentForm(forms.Form):
tempfile = forms.FileField()
还有dataprocessing.html
<form method="post" enctype="multipart/form-data" action="{% url "dataprocessing" %}">
<div class="form-group">
<label for="up">Input Data</label> {% csrf_token %}
<input type="file" name=myfile class="filestyle" data-buttonName="btn-primary" data-buttonBefore="true" data-size="sm" accept="application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
id="up">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-block">Upload Data</button>
<button type="button" class="btn btn-primary btn-block">Download Template</button>
</div>
</form>
【问题讨论】:
-
请为您的问题选择一个更合适的标题。
-
您的模板不是为
tempfile字段上传文件,而是为myfile上传文件(那应该是一个字符串:<input name="tempfile" .../>) -
尝试学习使用调试工具,以便您可以检查实际发布的内容,从而更容易解决此类问题。例如。在代码中使用
pdb行设置断点,或使用 django-debugger 检查请求。 -
谢谢@DanielRoseman
-
@dirkgroten yuup。我会尝试再次调试它。谢谢楼主
标签: django file-upload python-3.5 django-1.11