这是我的HTML代码
<b><a href="{% url 'polls:logout_info' %}">logout</a></b>
<b><a href={% url 'polls:edit' author %}>Edit</a></b>
<br>
<center><h2> -- WELCOME {{ name }} -- </h2></center>
{% if errors %}
<ul>
{% for error in errors %}
<center>{{ error }}</center>
{% endfor %}
</ul>
{% endif %}<br>
这是url.py代码(只显示与此代码相关的网址)
来自django.conf.urls import url
来自。导入视图urlpatterns = [
url( r'^login/$', views.login ,name='login'),
url( r'^saveinfo/$', views.saveinfo ,name='saveinfo'),
url( r'^indexmain/$', views.indexmain ,name='indexmain'),
url( r'^indexmain1/$', views.indexmain1 ,name='indexmain1'),
url( r'^homemain/$', views.homemain ,name='homemain'),
url( r'^logout_info/$', views.logout_info ,name='logout_info'),
url( r'^edit/(?P<author>[a-z]+)/$', views.edit ,name='edit'),
]
我收到了这个错误:
/ polls / login /中的NoReverseMatch /带有参数的''反向 找不到'('pratiksha',''和关键字参数'{}'。 0个图案 尝试过:[]
为什么这个字符串会附加一些特殊字符?
答案 0 :(得分:2)
让我们解释如何阅读NoReverseMatch
错误。
错误消息中显示了5个变量:
现在,了解URL反转的工作方式:django将尝试查找与您提供的模式名称匹配的所有url模式。对于每个模式名称,它将检查提供的位置或关键字参数是否可以插入到参数中以代替正则表达式组。所有这些模式都将被列为试用模式。
现在,我们可以从错误消息中找到答案
1.没有尝试过任何模式,因此找不到匹配提供的模式名称的模式。该问题的解决方案很简单:您将'polls:edit'传递到url
标记,但您的模式名为'edit',并且未在命名空间'polls'中注册。您可以通过仅传递'edit'或将模式移动到命名空间来解决这个问题:
urlpatterns = [
url( r'^login/$', views.login ,name='login'),
url( r'^saveinfo/$', views.saveinfo ,name='saveinfo'),
url( r'^indexmain/$', views.indexmain ,name='indexmain'),
url( r'^indexmain1/$', views.indexmain1 ,name='indexmain1'),
url( r'^homemain/$', views.homemain ,name='homemain'),
url( r'^', include([
url( r'^logout_info/$', views.logout_info ,name='logout_info'),
url( r'^edit/(?P<author>[a-z]+)/$', views.edit ,name='edit'),
], namespace="polls")),
]
在第一个(也是唯一的)位置参数的末尾有一个额外的空格。您的正则表达式不会接受这一点,因此不会匹配。你必须摆脱那个空白。在您的视图中,只需致电:
context ['author'] = context ['author']。strip()