1

我已用于django-adaptops此目的。我已经实现了文档中显示的机制。我需要知道如何使用浏览器来实现这一点,例如 - 我有一个模板,用户可以在其中选择 csv 文件,一旦我单击导入按钮,我就会调用我的视图,但在这里我无法读取文件上传到我的模型。我怎么能做到这一点。

这是我的模板代码。

 <form action="/manage/dashboard/importProspects" method="post" class="form-horizontal"
                      enctype="multipart/form-data"> {% csrf_token %}

                    <div class="row-fluid" style="margin-top: 5%">
                        <div class="span6">
                            <div class="control-group">
                                <p>{{ csvform.fname.label_tag }} {{ csvform.fname }} {{ csvform.fname.url }}</p>
                            </div>
                        </div>


                        <button type="submit" class="btn btn-small btn-success " style="margin-left:10px; ">
                            Import from CSV
                        </button>
                    </div>
       </form>

csvForm是加载此模板时传递的表单对象。

表单代码如下:

class ImportCsvForm(forms.Form):
     fname = forms.FileField(label='CSV')

并且/manage/dashboard/importProspectsurl 将调用我importcsv现在不执行任何操作的视图。

我该如何处理这个问题,以便我可以读取 csv 文件,但我无法获取 csvfile 路径。还是我在这里遗漏了一些东西?请帮忙。

4

1 回答 1

3

按照这个,

在模板中:

<form action="/manage/dashboard/importProspects" method="post" class="form-horizontal"
                      enctype="multipart/form-data"> {% csrf_token %}

                    <div class="row-fluid" style="margin-top: 5%">
                        <div class="span6">
                            <div class="control-group">
                                <p>
                                    <input type="file" name="csvfile" />
                                </p>
                            </div>
                        </div>


                        <input type="submit" class="btn btn-small btn-success " style="margin-left:10px; " />

                    </div>
   </form>

在 urls.py 中:

urlpatterns = patterns("mine.views",
        url(r'^', 'csvupload'),)

在views.py 文件中:

def csvupload(request):
    if request.method == "POST":
       f = request.FILES['csvfile']
       with open("/tmp/csvfile.csv", 'wb+') as destination:
                for chunk in f.chunks():
                    destination.write(chunk)

然后使用 csvfile 任何你想要的.....希望这对你有帮助。

于 2014-06-18T09:15:58.127 回答