Python NoReverseMatch at/Django 1.10

Python NoReverseMatch at/Django 1.10,python,django,Python,Django,我使用的是Django 1.10,我遇到了以下错误: 诺维塞马奇/ 找不到具有参数和关键字参数“{pk':1}”的“views.product_detail”的反向。已尝试0个模式:[] 这是我的index.html模板: {% for pr in product %} <li> {{ pr.pk }} <a href="{% url 'views.product_d

我使用的是Django 1.10,我遇到了以下错误:

诺维塞马奇/ 找不到具有参数和关键字参数“{pk':1}”的“views.product_detail”的反向。已尝试0个模式:[]

这是我的index.html模板:

{% for pr in product %}
                <li>
                    {{ pr.pk }}
                    <a href="{% url 'views.product_detail' pk=pr.pk %}">
                        {{ pr.name }}
                    </a>
                    || {{ pr.description }} || <img src="{{ pr.image.url }}">
                </li>
{% endfor %}
我的应用程序URL.py是:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', include('products.urls') ),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.hello_world, name='hello'),
    url(r'^product/(?P<pk>[0-9]+)/$', views.product_detail,name='product_detail'),
]
错误消息是:


谢谢你的帮助

NoReverseMatch表示Django没有将您请求的URL与URL.py中的任何URL匹配

看起来r“^$”找不到任何内容,因为该模式没有包含任何文本的空间。将项目URL中的r“^$”更改为r或r“^products/”。这样,您的URL将如下所示:

'/products/product/1/' # For product_detail
'/products/' # For views.hello_world

问题在于如何包含产品URL。您已经用$终止了该包含模式,因此以后将不会有任何匹配。包括时,切勿使用$

url(r'', include('products.urls') ),

你不应该像那样使用URL标签。相反,使用permalink装饰器。嗨,克里斯,我将r'^$'更改为r'^/$,现在消息页面找不到404请求方法:获取请求URL:使用Shoppy.URL中定义的URLconf,Django尝试了这些URL模式,顺序如下:^admin/^/$[name='hello']products/?P[0-9]+/$[name='product\u detail']^media\/?P.$当前URL,这些都不匹配。谢谢你的帮助
url(r'', include('products.urls') ),