2017-03-27 4 views
1

난`장고 1.10를 사용하고 나는이 오류가 :NoReverseMatch/장고 1.10

인수 'views.product_detail' '()'및 키워드 인자 '{'PK에 대한 역 /에서 NoReverseMatch ' : 1} '을 (를) 찾을 수 없습니다. 0 패턴 (들)이 시도 :

{% 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은 []

이것은 내 index.html을 템플릿입니다 :

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

감사합니다!

+2

이와 같은 URL 태그를 사용하면 안됩니다. 대신, permalink 데코레이터를 사용하십시오. https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#get-absolute-url –

답변

-1

NoReverseMatch는 Django가 요청한 URL을 urls.py에있는 URL과 일치시키지 않았 음을 의미합니다.

패턴에 텍스트를 포함 할 여지가 없기 때문에 r'^$'은 아무것도 찾지 못할 것입니다. 프로젝트 URL에 r'^$'r'' 또는 r'^products/'으로 변경하십시오. 그러면 URL은 다음과 같이 표시됩니다.

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

안녕하세요 Kris, 저는 '^ $'을 (를) '^/$'(으)로 변경합니다. 메시지는 ** 페이지를 찾을 수 없음 (404) 요청 방법 : \t GET 요청 URL : http : // localhost : 8000/ Shoppy.urls에 정의 된 URLconf를 사용하여 Django는 다음 URL 패턴을 다음 순서로 시도했습니다. ^ 관리/ ^/$ [NAME = '안녕하세요'] 제품/(? P [0-9] +)/$ [NAME = 'product_detail'] ^ 미디어 \/(? P . *) $ 현재 URL,,이 중 하나와 일치하지 않습니다. ** 도움 주셔서 감사합니다. –

+0

답을 업데이트했습니다. –

0

문제는 제품 URL을 어떻게 포함했는지입니다. $으로 패턴을 포함하여 종료 했으므로 이후에는 아무 것도 일치하지 않습니다. 포함 할 때 $를 사용하지 마십시오.

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