2017-03-14 14 views
0

私は最初のdjangoサイトを作るためのdjangoforgirls.orgチュートリアルに従っています。私は、あなたのテンプレートを拡張する段階を、一般的なテンプレートを使用する私のウェブサイト内の記事へのリンクを作ることを試みています。Django: - NoReverseMatchエラー

"NoReverseMatch at /、" 'post_detail'の引き数 '()'とキーワード引数 '{' pk ':' '}'が見つかりませんでした1パターンが試行されました: "[post /(?P \ d +)/ $ ']"

いくつかの変数とファイル名が奇妙に見えるかもしれません。ウェブサイトの使用は音楽サンプリングでしたが、私はそのチュートリアルの名前を使っていました違う。

プロジェクト全体のための私urls.py:

from django.conf.urls import include, url 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'', include('sample.urls')), 
] 

特定のアプリ(サンプル)のための私urls.py:

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

urlpatterns = [ 
    url(r'^$', views.post_list, name='post_list'), 
    url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'), 
] 

アプリのための私のviews.py:

from django.utils import timezone 
from .models import AudioSample 
from django.shortcuts import render, get_object_or_404 

def post_list(request): 
    samples = AudioSample.objects.order_by('length') 
    return render(request, 'blog/post_list.html', {'samples': samples}) 

def post_detail(request, pk): 
    post = get_object_or_404(AudioSample, pk=pk) 
    return render(request, 'blog/post.html', {'post': post}) 

ウェブサイトの別のページへのリンクである基本テンプレートのコード行:

<a href="{% url 'post_detail' pk=post.pk %}">How to sample</a> 

私は、同様のプロジェクトhereでこの質問をした別の人を見て、それが固定しまったが、私は私への変更を(私は名前空間が何であるかを理解しない)ように十分な答えを理解しません。

+0

How to sample。キーワード引数の代わりにこれを試してください。 – shadow0359

答えて

0

urls.pyが複数ある場合、ネームスペースはdjangoにリクエストの処理方法を伝えることができます。だから通常、名前空間はAPP名です。

0

プロジェクトurls.pyには、r''r'^'に置き換えてください。前者はすべてのURLに一致し、後者は文字列の先頭に一致します。