【问题标题】:How to solve NoReverseMatch error in django [duplicate]如何解决 django 中的 NoReverseMatch 错误 [重复]
【发布时间】:2018-09-28 12:03:36
【问题描述】:

我是 django 新手。我想在 django 网页中上传文件。当我执行代码时,它显示以下错误。

NoReverseMatch at /index/
Reverse for 'index' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

请帮助我在表格上打印 csv 结果而不将 csv_file 保存在 db 上,如果有任何错误,请更正我的代码

主 urls.py

 urlpatterns = patterns('',

        url(r'^admin/', include(admin.site.urls)),

        url(r'^',include('myapp.urls',namespace='myapp')),
    )

    if settings.DEBUG:
             urlpatterns+=static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
             urlpatterns+=static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

myapp.urls

from django.conf.urls import url, include
from . import views

urlpatterns = [
    url(r'^index/', views.upload_csv,name='upload_csv'),

]

views.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/index.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:index",{"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:index"))

        file_data = csv_file.read().decode("utf-8")
        rows=[]
        lines = file_data.split("\n")
        for line in lines:
            fields = line.split(",")
            data_dict = {}
            data_dict["GSTIN/UIN"] = fields[0]
            data_dict["INV NO"] = fields[1]
            data_dict["INV-DATE"] = fields[2]
            data_dict["Taxable value"] = 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",variables))
    #return render(request,"myapp/index.html",variables)

html

<!doctype>
<html>
  <body>
    <div class="container" style="margin-top:90px;">
      <form action="{% url 'myapp:index' %}" method="post" enctype="multipart/form-data">
      {% csrf_token %}
      <div class="row">
        <label for="fileupload" class="btn btn-primary  col-md-2 col-sm-4 uploadBtn" >Upload GSTR 2A</label><br>
        <input type="file" class="fileupload" id="fileupload" required="True">
      </div>
    </div>
  </form>

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

【问题讨论】:

    标签: python django


    【解决方案1】:

    您的 URL 模式名称和 URL 标记不匹配。在您使用的 URL 模式中,upload_csv

    url(r'^index/', views.upload_csv,name='upload_csv'),
    

    但在 URL 标记中您使用的是index

    {% url 'myapp:index' %}
    

    更改您的代码以使其匹配。

    【讨论】:

    • 好的。但我想在 UI 上打印 csv 数据。但它什么也没打印
    • 您的问题标题是“如何解决 django 中的 NoReverseMatch 错误”。我已经向你展示了如何解决这个问题。打印 csv 数据是一个单独的问题,所以不属于这个问题。
    • 我也提到要打印csv文件数据
    • 是的,但是当需要解决特定问题而不是几个不相关的问题时,堆栈溢出问题的效果最好。我可以看到您已经编辑了问题,但是当标题与问题完全无关时,我不会投票重新打开。
    猜你喜欢
    • 2021-08-04
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 2018-08-12
    • 1970-01-01
    • 2018-02-07
    • 2016-11-18
    相关资源
    最近更新 更多