1

我要做的就是在 Django 中设置一个仅限员工的页面,以将一些简单的 .txt 文件上传到服务器,然后 cronjob 会选择它来完成剩下的工作。我已经阅读了一些有关 Django 文件上传的文档,但其中大多数似乎有点太多了,这意味着我需要先创建一些模型,等等。但就我而言,它只是一个用于 cronjob 的简单文本文件,而我没有不想让它那么复杂。有没有办法以更简单的方式实现这一目标?

4

1 回答 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 回答