2017-03-27 4 views
1

I`m mit Django 1.10 und ich diesen Fehler:NoReverseMatch an/Django 1.10

NoReverseMatch bei/für 'views.product_detail' Reverse- mit Argumenten '()' und Keyword-Argumente '{' pk‘ : 1} 'nicht gefunden. 0 Muster (n) versucht: []

Dies ist meine index.html Vorlage:

{% 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 %} 

Mein Hauptprojekt urls.py ist:

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

My App urls.py ist :

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'), 
] 

Mein views.py ist:

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)) 

die Fehlermeldung: Error message

Danke für Ihre Hilfe !!!

+2

Sie sollten nicht URL-Tag wie das verwenden. Verwenden Sie stattdessen den Permalink Decorator. https://docs.djangoproject.com/de/dev/ref/models/instances/?from=olddocs#get-absolute-url –

Antwort

-1

NoReverseMatch bedeutet, dass Django Ihre angeforderte URL nicht mit einer beliebigen URL in Ihrer urls.py übereinstimmt.

Es sieht aus wie r'^$' würde nichts finden, weil das Muster keinen Platz hat, um Text zu enthalten. Ändern Sie in Ihren Projekt-URLs r'^$' in r'' oder r'^products/'. So würden Ihre URLs wie folgt aussehen:

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

Hallo Kris, ich ändere r '^ $' zu r '^/$' und jetzt Die Nachricht lautet ** Seite nicht gefunden (404) Anforderungsmethode: GET URL anfordern: \t http: // localhost: 8000/ Mithilfe der in Shoppy.urls definierten URLconf hat Django diese URL-Muster in dieser Reihenfolge versucht: ^ admin/ ^/$ [name = 'Hallo'] Produkte/(? P [0-9] +)/$ [name = 'product_detail'] ^ Medien \/(? P . *) $ Die aktuelle URL,, passte nicht zu diesen. ** Danke für Ihre Hilfe –

+0

Ich habe meine Antwort aktualisiert. –

0

Das Problem ist, wie Sie die Produkt-URLs aufgenommen haben. Sie haben das inklusive Muster mit $ beendet, damit nichts danach passt. Verwenden Sie niemals ein $.

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