2017-01-03 15 views
1

これは例外値です: 引数 '()'およびキーワード引数 '{' id ':1}'が見つかりません。 0パターン(単数または複数)を試みた:[]DJango - NoReverseMatchエラー

index.htmlを

<p>Estudiante: <a href="{% url 'polls.views.student_detail' id=student.id %}">{{student.stduent_name}}</a></p> 

リンクは、この "127.0.0.1:8000/polls/1/" のようなルートに行くべきです。経路はリンクからうまく機能します。

views.py

def student_detail(request, id): 
    student = get_object_or_404(Student, id=id) 
    return render(request, 'polls/student_detail.html', {'student': student}) 

urls.py

urlpatterns = [ 
    url(r'^$', views.index), 
    url(r'^polls/(?P<id>[0-9]+)/', views.student_detail), 

]

画像:

Error details

Route tree

+0

私はこれが答えだとは思わないが、student_nameは間違っています。 – Doug

+0

私は知っているが、失敗ではない。 – AdrianCR

答えて

2

urlテンプレートタグの最初の引数は「URL名」です。

url(r'^polls/(?P<id>[0-9]+)/', views.student_detail, name='student-detail'), 

して、好きな、それを使用するようにテンプレートを更新:あなたはルートを定義するときに、名前を指定するような何かする必要があります

{% url 'student-detail' id=student.id %} 

は、URLテンプレートとURL名のthe documentationを参照してください。

1

例外のテンプレートコードは、質問に貼り付けたテンプレートコードとは異なります。例外は、テンプレートタグが次のようになっていることを示します。

{% url polls.views.student_detail id=student.id %} 

例外と一致する引用符がないことに注意してください。引用符がなければ、djangoはテンプレートタグに文字列として渡すのではなく、polls.views.student_detailを変数として解決しようとしています。それはあなたが空白の文字列をテンプレートタグに渡していることを解決できないので。

1

名前でURLを呼び出していますが、urls.pyファイルにそのような名前付きURLはありません。

あなたurlpatternsは次のようになります。

urlpatterns = [ 
    url(r'^$', views.index), 
    url(r'^polls/(?P<id>[0-9]+)/', views.student_detail, name='student_detail'), 
] 

そして、あなたのテンプレートで:あなたが明示的にパラメータ名を渡す必要はありません

<p>Estudiante: <a href="{% url 'student_detail' student.id %}">{{student.stduent_name}}</a></p> 

の通知、Djangoはスペースで区切られた各パラメータを変換しますurl regexパターンで指定されたそれぞれのパラメータで指定します。