我要做的就是在 Django 中设置一个仅限员工的页面,以将一些简单的 .txt 文件上传到服务器,然后 cronjob 会选择它来完成剩下的工作。我已经阅读了一些有关 Django 文件上传的文档,但其中大多数似乎有点太多了,这意味着我需要先创建一些模型,等等。但就我而言,它只是一个用于 cronjob 的简单文本文件,而我没有不想让它那么复杂。有没有办法以更简单的方式实现这一目标?
问问题
39 次
1 回答
0
您可以创建自己的视图来上传文件,而无需使用模型。您只需要在其中创建一个包含 FileField 的 Django 表单,然后创建视图和控制器,就像这样:
视图.py
def upload_file(request):
if request.method == 'POST':
form = FileForm(request.POST, request.FILES)
if form.is_valid() and form.is_multipart():
save_file(request.FILES['file'])
return HttpResponse('Thanks for uploading the file')
else:
return HttpResponse('Bad file data.')
else:
form = FileForm()
return render_to_response('upload_file_form.html', {'form': form})
def save_file(file, path=''):
filename = file._get_name()
fd = open('%s/%s' % (MEDIA_ROOT, str(path) + str(filename)), 'wb')
for chunk in file.chunks():
fd.write(chunk)
fd.close()
upload_file_form.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>File Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Upload file</h1>
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
<form enctype="multipart/form-data" action="" method="post">{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Upload file">
</form>
</body>
</html>
于 2013-04-30T10:04:40.403 回答