Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django网页中未打印csv文件_Python_Django - Fatal编程技术网

Python django网页中未打印csv文件

Python django网页中未打印csv文件,python,django,Python,Django,我是django新手。我想上传csv文件,处理数据并在UI上呈现结果。为此,我创建了以下代码。 问题是csv文件未上载。如果我上传了其他文件格式,它不会显示任何错误消息。 此外,我想打印csv数据的结果在用户界面上。 视图.py from django.shortcuts import render from django.conf import settings from django.http import HttpResponseRedirect from django.contri

我是django新手。我想上传csv文件,处理数据并在UI上呈现结果。为此,我创建了以下代码。 问题是csv文件未上载。如果我上传了其他文件格式,它不会显示任何错误消息。 此外,我想打印csv数据的结果在用户界面上。 视图.py

from django.shortcuts import render

from django.conf import settings

from django.http import HttpResponseRedirect

from django.contrib import messages

import csv

from django.core.urlresolvers import reverse

import logging

def upload_csv(request):

    data = {}
    if "GET" == request.method:
        return render(request, "myapp/upload_csv.html", data)
    # if not GET, then proceed
    try:
        csv_file = request.FILES["csv_file"]
        if not csv_file.name.endswith('.csv'):
            c=messages.error(request,'File is not CSV type')
            return HttpResponseRedirect(reverse("myapp:upload_csv",{"c":c}))
        #if file is too large, return
        if csv_file.multiple_chunks():

            messages.error(request,"Uploaded file is too big (%.2f MB)." % (csv_file.size/(1000*1000),))
            return HttpResponseRedirect(reverse("myapp:upload_csv"))

        file_data = csv_file.read().decode("utf-8")

        lines = file_data.split("\n")
        #loop over the lines and save them in db. If error , store as string and then display
        for line in lines:
            fields = line.split(",")
            data_dict = {}
            data_dict["GSTIN/UIN"] = fields[0]
            data_dict["start_date_time"] = fields[1]
            data_dict["end_date_time"] = fields[2]
            data_dict["notes"] = fields[3]
            try:
                form = EventsForm(data_dict)
                if form.is_valid():
                    form.save()
                else:
                    logging.getLogger("error_logger").error(form.errors.as_json())
            except Exception as e:
                logging.getLogger("error_logger").error(repr(e))
                pass

    except Exception as e:
        logging.getLogger("error_logger").error("Unable to upload file. "+repr(e))
        messages.error(request,"Unable to upload file. "+repr(e))

    #return HttpResponseRedirect(reverse("myapp:index",data_dict))
    return HttpResponseRedirect("myapp/upload_csv.html")
html


{%csrf_令牌%}
文件:
上传

{%if c%} {{c}} {%endif%}
您需要通过上下文向html文件传递数据。你需要修改你的代码,比如

    rows = []
    lines = file_data.split("\n")
    #loop over the lines and save them in db. If error , store as string and then display
    for line in lines:
        fields = line.split(",")
        data_dict = {}
        data_dict["GSTIN/UIN"] = fields[0]
        data_dict["start_date_time"] = fields[1]
        data_dict["end_date_time"] = fields[2]
        data_dict["notes"] = fields[3]
        try:
            form = EventsForm(data_dict)
            if form.is_valid():
                form.save()
            else:
                logging.getLogger("error_logger").error(form.errors.as_json())
        except Exception as e:
            logging.getLogger("error_logger").error(repr(e))
            pass
        rows.append(line)

except Exception as e:
    logging.getLogger("error_logger").error("Unable to upload file. "+repr(e))
    messages.error(request,"Unable to upload file. "+repr(e))

variables = {}
variables['lines'] = rows

#return HttpResponseRedirect(reverse("myapp:index",data_dict))
return render(request,"myapp/upload_csv.html", variables)
然后在html文件中

<table>
{% for line in lines %}
    <tr><td>{{ line.0 }}</td><td>{{ line.1 }}</td></tr>
{% endfor %}
</table>

{第%行中的第%行}
{{line.0}{{line.1}
{%endfor%}

这里可能有几处输入错误,但它应该会让您朝着正确的方向前进

您似乎根本没有将文件传递给模板。