2017-05-10 15 views
0

友人、私は数日の間にNoReverseMatchエラーに苦しんでおり、コードに何が間違っているのか分からないようです。私はDjangoのに非常に新しいですと言わなければならない、だから私はそれから学ぶことができるようにあなたが問題にソリューションを説明する場合、私はそれは非常に感謝:)Django NoReverseMatchテンプレートでエラー

エラー

NoReverseMatch at /david/Physics/ 
Reverse for 'subcategory' with keyword arguments '{'subcategory_name': 'a'}' not found. 1 pattern(s) tried: ['david/([a-zA-Z_]+)/(?P<subcategory_name>[a-zA-Z_]+)/$'] 

category.html:

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

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'^([a-zA-Z_]+)/(?P<subcategory_name>[a-zA-Z_]+)/$', 
     views.view_subcategory, name='subcategory'), 
    url(r'^([a-zA-Z_]+)/([a-zA-Z_]+)/(?P<information>[a-zA-Z_]+)/$', 
     views.view_information, name='information'), 
    ] 

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 

# 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 = {'subcategories': map(lambda x: str(x), subcategories)} 
    return render(request, 'basic_web/category.html', context) 

def view_subcategory(request, subcategory_name): 
    return HttpResponse('You are now browsing subcategory %s' % subcategory_name) 

def view_information(request, information): 
    return HttpResponse('You are now seeing %s' % information) 

もっと情報を提供する必要がある場合は、私に教えてください。 あなたが私を助けてくれることを願っています。

答えて

0

サブカテゴリのURLパターンに2つのキャプチャグループがあります(また、自分の情報には3つのキャプチャグループがあります)。あなたが最初のグループに名前を与えていない、とあなたは{% url %}タグでそれを渡していない

/param1/subcategory_name/ 

:これは、のようなものと一致することを意味します。本当に欲しいですか?

url(r'^(?P<param_name>[a-zA-Z_]+)/(?P<subcategory_name>[a-zA-Z_]+)/$', 

、あなたはURLを必要とするときにそれを渡す:あなたのパターンは

r'^(?P<subcategory_name>[a-zA-Z_]+)/$', 

なるように、あなたはおそらく、一方で、あなたが実際にそれを必要としない場合、あなたはそれに名前を与える必要があり、それを削除する必要があります:

{% url 'subcategory' param_name=param subcategory_name=subcategory %} 

おそらく最初のパラメータはカテゴリですか?

+0

はい!それが問題でした!どうもありがとうございます! – Andromedous