Python - 从按钮单击调用django视图 - 从表单上传文件

时间:2015-09-13 19:24:22

标签: python django

我有这样的表格:

<form method="POST" enctype="multipart/form-data">
    <div class="form-group">
        <label for="InputFile">File input</label>
        <input type="file" id="exampleInputFile" name="myfile">
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
</form>

此表单位于我的索引视图中:

def index(request):
    return render(request, 'App/index.html')

我想要做的是让用户上传文件,而某些视图必须对其进行一些操作。

问题是我有另一种方法来处理文件:

def do_some_work(request):
    if request.method == "POST":
        data = request.FILES['myfile']

        lines = data.split("\n")

        ...

我试图做的事情,没有任何成功,是链接&#34;提交&#34;按钮到这个视图

我不想刷新页面。我知道作为一个http请求页面必须刷新

所以问题:

在这种情况下,是否需要在urls.py中使用另一个url来处理此方法?类似的东西:

url(r'^work/$', views.do_some_work, name='do_some_work'), (I don't know if this is correct, i will figure it out)

点击提交按钮后,我究竟能如何调用此功能?我的表格中是否缺少某些内容?

是否可以不刷新孔页? AJAX?

任何帮助都将非常感激

1 个答案:

答案 0 :(得分:0)

我认为你想要更像这样构建它:

# function to parse data
def do_some_work(data):
    # do something to data
    return processed_data

# view to receive request
def index(request):

    if request.method == "POST":
        # parse posted data
        data = request.FILES['myfile']
        request_processed_data = do_some_work(data)
        context = {'data':request_processed_data}
        return render(request, 'App/index.html', context)

    else:
         # render form
         some_form = someForm()
         form_context = {'some_form':some_form}
         context = RequestContext(request, form_context)
         return HttpResponse(template.render(context))