如何解决 django 中的 NoReverseMatch 错误 [重复]

Posted

技术标签:

【中文标题】如何解决 django 中的 NoReverseMatch 错误 [重复]【英文标题】:How to solve NoReverseMatch error in django [duplicate] 【发布时间】: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>

【问题讨论】:

【参考方案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文件数据 是的,但是当需要解决特定问题而不是几个不相关的问题时,堆栈溢出问题的效果最好。我可以看到您已经编辑了问题,但是当标题与问题完全无关时,我不会投票重新打开。

以上是关于如何解决 django 中的 NoReverseMatch 错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 django 中的 NoReverseMatch 错误 [重复]

如何解决 VS Code 中的“无法从源代码解析导入“django.contrib”?

如何解决 Django 中的以下错误:“OperationalError:外键不匹配”

如何解决 Heroku 上托管的 django 项目中的迁移问题?

如何解决 .accepted_renderer 未在 Django 中的响应错误上设置

如何解决 Django 中的“请求设置 INSTALLED_APPS,但未配置设置。”错误?