2017-05-11 4 views
0

Zweite Zeit über NoReverseMatch. Ich kann den Fehler einfach nicht gut genug verstehen, um den Fehler in meinem Code zu finden. Das letzte Mal war es, weil ich den Feldern in meinem URL-Regex keinen Namen gegeben habe, aber das ist jetzt nicht das Problem. Ich verstehe, dass eine Million Dinge schief gehen können, aber aus irgendeinem Grund kann ich es einfach nicht finden.Django NoReverseMatch mit Vorlagen (wieder)

Der Fehler ist:

NoReverseMatch an/david/Physik/a/ umge für 'Information' mit Schlüsselwort-Argumente '{' category_name ': 'Physik', 'information_name': 'Test info' , 'Unterkategorie_Name': 'a'} 'nicht gefunden. 1 Schema (n) versucht: ['david/(? P [a-zA-Z _] +)/(? P [a-zA-Z _] +)/(? P [a-zA-Z _] +)/$ ']

die Vorlage den Fehler verursacht ist:

<h1>The items for {{ category }}/{{ subcategory }}</h1> 
{% if items %} 
    <ul> 
    {% for item in items %} 
     <li><a href="{% url 'information' category_name=category subcategory_name=subcategory information_name=item %}">{{ item }}</a></li> 
    {% endfor %} 
    </ul> 
{% else %} 
    <h4>No items for that subcategory</h4> 
{% endif %} 

views.py:

from django.shortcuts import render, get_list_or_404, get_object_or_404 
from django.http import HttpResponse 

from .models import Category, Subcategory, Information 

# Create your views here. 

def index(request): 
    return render(request, 'basic_web/index.html') 

def search(request): 
    return HttpResponse('Here you can search!') 

def browse(request): 
    categories = Category.objects.all() 
    context = {'categories': categories} 
    return render(request, 'basic_web/browse.html', context) 

def view_category(request, category_name): 
    category = get_object_or_404(Category,name__iexact=category_name) 
    subcategories = get_list_or_404(Subcategory, parent=category) 
    context = {'category': str(category), 'subcategories': map(str, subcategories)} 
    return render(request, 'basic_web/category.html', context) 

def view_subcategory(request, category_name, subcategory_name): 
    category = get_object_or_404(Category,name__iexact=category_name) 
    subcategory = get_object_or_404(Subcategory, name__iexact=subcategory_name, parent=category) 
    items = get_list_or_404(Information, subcategory=subcategory, category=category) 
    context = {'category': str(category), 'subcategory': str(subcategory), 'items': map(str,items)} 
    return render(request, 'basic_web/subcategory.html', context) 

def view_information(request, category_name, subcategory_name, information_name): 
# category = get_object_or_404(Category,name__iexcat=category_name) 
# subcategory = get_object_or_404(Subcategory, name__iexact=subcategory_name, parent=category) 
# information = get_object_or_404(Information, name__iexact=information_name, parent=subcategory) 
    return HttpResponse('{0} {1} {2}'.format(category_name, subcategory_name, information_name)) 

urls.py:

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^search/$', views.search, name='search'), 
    url(r'^browse/$', views.browse, name='browse'), 
    url(r'^(?P<category_name>[a-zA-Z_]+)/$', views.view_category, name='category'), 
    url(r'^(?P<category_name>[a-zA-Z_]+)/(?P<subcategory_name>[a-zA-Z_]+)/$', 
     views.view_subcategory, name='subcategory'), 
    url(
    r'^(?P<category_name>[a-zA-Z_]+)/(?P<subcategory_name>[a-zA-Z_]+)/(?P<information_name>[a-zA-Z_]+)/$', 
     views.view_information, name='information'), 
    ] 

ich würde auch sehr zu schätzen wissen wenn du könntest giv Ich habe ein paar Tipps, wie man erkennt, was eigentlich falsch ist, wenn Django sagt NoReverseMatch

Vielen Dank!

+0

Wären Sie so freundlich, die Antwort als richtig zu markieren. Danke – e4c5

Antwort

1

Dies ist Ihre URL-Definition.

r'^(?P<category_name>[a-zA-Z_]+)/(?P<subcategory_name>[a-zA-Z_]+)/(?P<information_name>[a-zA-Z_]+)/$', 
    views.view_information, name='information'), 

Soweit ich sehen kann es keine Leerzeichen in der URL. Aber Sie haben anscheinend einen Platz in einem Ihrer Werte

'{'category_name': 'Physics', 'information_name': 'Test info', 'subcategory_name': 'a'}' 
+0

Sie sind alle Zauberer, ich fühle mich schlecht, die ganze Zeit hier zu kommen, aber Sie Jungs immer liefern. Ich danke dir sehr! irgendwelche Tipps, wie Sie NoReverseMatch erreichen? – Andromedous

+1

Sie sind herzlich willkommen. Ich bin froh, dass ich geholfen habe. Da Sie hier noch neu sind, möchte ich darauf hinweisen, dass die bevorzugte Art, hier "Danke" zu sagen, darin besteht, gute Fragen und hilfreiche Antworten zu wählen (sobald Sie genug Ansehen haben) und die hilfreichste Antwort zu akzeptieren auf jede Frage, die Sie stellen (was auch Ihrem Ruf einen kleinen Schub verleiht). [Wenn jemand antwortet] (http://stackoverflow.com/help/someone-answers) – e4c5

+0

Wie für Tipps, empfehle ich eine erneute Lektüre der relevanten Abschnitt des Handbuchs :-) – e4c5