【发布时间】:2017-08-19 14:34:46
【问题描述】:
我正在使用 Django 1.10 并收到此错误:
NoReverseMatch 在 / 未找到带有参数“()”和关键字参数“{'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 %}
我的主要项目 urls.py 是:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', include('products.urls') ),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
我的应用程序 urls.py 是:
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'),
]
我的views.py是:
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from django.shortcuts import render, get_object_or_404
from .models import Product
# Create your views here.
def hello_world(request):
product = Product.objects.order_by('id')
template = loader.get_template('index.html')
context = {
'product': product
}
return HttpResponse(template.render(context, request))
def product_detail(request, pk):
product = get_object_or_404(Product, pk=pk)
template = loader.get_template('product_detail.html')
context = {
'product': product
}
return HttpResponse(template.render(context, request))
错误信息是: Error message
感谢您的帮助!!!
【问题讨论】:
-
你不应该使用这样的 URL 标签。相反,使用永久链接装饰器。 docs.djangoproject.com/en/dev/ref/models/instances/…