如何解决 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 项目中的迁移问题?