私はDjangoフレームワークhereのチュートリアルの第4部と一緒に、Pythonにかなり新しいです。私は、世論調査のアプリのための一般的なビューを実装しようとしている - 私のコードは正しいようです(私の知る限り)、私は投票しようとしたとき、私は述べてNoReverseMatch例外を取得:NoReverseMatch Djangoの例外ヘルプ
リバース用引数 '(1L、)'とキーワード引数 '{}'がない 'polls/poll_results'が見つかりません。
一般的なビューを試みる前に、私のコードが完全に動作していましたが、今問題を特定できないようです。
はここでポーリングディレクトリ内の私urls.pyのためのコードです:
from django.conf.urls.defaults import *
from djtest.polls.models import Poll
info_dict = {
'queryset': Poll.objects.all(),
}
urlpatterns = patterns('',
(r'^$', 'django.views.generic.list_detail.object_list', info_dict),
(r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict),
url(r'^(?P<object_id>\d+)/results/$', 'django.views.generic.list_detail.object_detail', dict(info_dict, template_name='polls/results.html'), 'poll_results'),
(r'^(?P<poll_id>\d+)/vote/$', 'djtest.polls.views.vote'),
)
そしてここviews.pyです:私はそれが構文エラーであることを感じている
from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import render_to_response, get_object_or_404
from django.core.urlresolvers import reverse
from djtest.polls.models import Poll, Choice
def vote(request, poll_id):
p = get_object_or_404(Poll, pk=poll_id)
try:
selected_choice = p.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
#redisplay form
return render_to_response('polls/poll_detail.html', {
'object': p,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse('poll_results', args=(p.id,)))
、私はそれを見つけることができません。任意の助けを事前に感謝...
ありがとうございます。チュートリアルのバージョンとどのように違うのか、それがなぜ以前にはうまくいかなかったのかを説明できますか? – mportiz08
チュートリアルについてはわかりません。しかし、一般的なビューはキーワード引数を使用しているようです。逆リゾルバはargsとkwargsを別々に照合するので、argsを渡すときにkwargsを使用したビューと一致しません。しかし、あなたがkwargsを渡すとき、それは動作します。理にかなっている? – bstpierre
ええ、ありがとう! – mportiz08