NoReverseMatch:无法在Django中的URL中设置命名组

时间:2016-06-22 18:24:09

标签: python regex django

我收到此错误以转到网址:http://127.0.0.1:9000/mypolls/anyerror

NoReverseMatch at /mypolls/anyerror
Reverse for 'mypolls' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['mypolls/(?P<error_message>.*)$']

我的urls.py包含:

from django.conf.urls import url  
from . import views
urlpatterns=[
    url(r'^$',views.home,name='home'),
    url(r'^polls/$',views.list,name='list'),
    url(r'^polls/(?P<pk>[0-9]+)$',views.detail,name='detail'),
    url(r'^polls/(?P<pk>[0-9]+)/vote$',views.vote,name='vote'),
    url(r'^mypolls/(?P<error_message>.*)$',views.mypolls,name='mypolls'),
    url(r'^create/$',views.create,name='create'),
    url(r'^polls/(?P<pk>[0-9]+)/edit$',views.edit,name='edit'),
    url(r'^polls/(?P<pk>[0-9]+)/delete$',views.delete,name='delete'),
]

我的views.py包含:

def mypolls(request,error_message=None):
    polls=Poll.objects.filter(author=request.user)
    return render(request,'polls/list.html',{'polls':polls,'error_message':error_message})

这里有什么问题?

我的list.html包含:

{% extends 'polls/base.html' %}
{% block content %}
{% if error_message %}
<p>{{error_message}}</p>
{% endif %}
{% for poll in polls %}
<li><a href='{% url "detail" pk=poll.pk %}'>{{ poll.question }}</a>
{% endfor %}
{% endblock %}

1 个答案:

答案 0 :(得分:1)

问题出在base.html中。我没有在base.html的mypolls的url中给出关键字参数。现在我将网址设置为:

{% url "mypolls" error_message="" %}

它工作正常。 谢谢@Alasdair和大家。