2013-04-17 10 views
6

Ben django öğreticisini yapmaya çalışıyorum.Django Eğitimi 04 NoReverseMatch at/polls/1/- u'polls 'bir kayıtlı alan değil

  • Django 1.5.1 (64-bit)
  • Python 2.7 (64-bit)
  • sayfa ayrıntı üzerinde

, diyor: Ben Öğreticisi 04. üzerinde aşağıdaki var duyuyorum:

NoReverseMatch at /polls/1/ 

diyor ki u'polls' tescilli ad değildir.

anketler/views.py

from django.http import HttpResponse, Http404, HttpResponseRedirect 
from django.shortcuts import render, get_object_or_404 
from django.template import Context, loader 
from django.core.urlresolvers import reverse 
from polls.models import Poll 


def index(request): 
    latest_poll_list = Poll.objects.order_by('-pub_date')[:5] 
    template = loader.get_template('polls/index.html') 
    context = Context({ 
     'latest_poll_list': latest_poll_list, 
    }) 
    return HttpResponse(template.render(context)) 


def detail(request, poll_id): 
    try: 
     poll = Poll.objects.get(pk=poll_id) 
    except Poll.DoesNotExist: 
     raise Http404 
    #return HttpResponseRedirect(reverse('poll_results', kwargs={'object_id': p.id}))  
    return render(request,'polls/detail.html',{'poll':poll}) 
''' 
    poll = get_object_or_404(Poll, pk=poll_id) 
    return render(request, 'polls/detail.html', {'poll': poll}) 
''' 

def results(request, poll_id): 
    poll = get_object_or_404(Poll, pk=poll_id) 
    return render(request, 'polls/results', {'poll': poll}) 


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 the poll voting form. 
     return render(request, 'polls/detail.html', { 
      'poll': p, 
      'error_message': "You didn't select a choice.", 
     }) 
    else: 
     selected_choice.votes += 1 
     selected_choice.save() 
     # Always return an HttpResponseRedirect after successfully dealing 
     # with POST data. This prevents data from being posted twice if a 
     # user hits the Back button. 
     return HttpResponseRedirect(reverse('polls:results', args=(p.id,))) 

anketler/urls.py:

{% load url from future %} 
<h1>{{ poll.question }}</h1> 

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %} 

<form action="{% url 'polls:detail' poll.id %}" method="post"> <!-- --> 
    {% csrf_token %} 
{% for choice in poll.choice_set.all %} 
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" /> 
    <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br /> 
{% endfor %} 
<input type="submit" value="Vote" /> 
</form> 

cevap

20

Aldırma

from django.conf.urls import patterns, url 
from django.views.generic import DetailView, ListView 
from polls.models import Poll 

urlpatterns = patterns('', 
    url(r'^$', 
     ListView.as_view(
      queryset=Poll.objects.order_by('-pub_date')[:5], 
      context_object_name='latest_poll_list', 
      template_name='polls/index.html'), 
     name='index'), 
    url(r'^(?P<pk>\d+)/$', 
     DetailView.as_view(
      model=Poll, 
      template_name='polls/detail.html'), 
     name='detail'), 
    url(r'^(?P<pk>\d+)/results/$', 
     DetailView.as_view(
      model=Poll, 
      template_name='polls/results.html'), 
     name='results'), 
    url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote', name='vote'), 
) 

anketler/templates/anketler/detail.html. Sadece bir adımı kaçırdım.

url(r'^polls/', include('polls.urls')), 

için: Sadece bir satır değişti

urlpatterns = patterns('', 
    # Examples: 
    # url(r'^$', 'hello.views.home', name='home'), 
    # url(r'^hello/', include('hello.foo.urls')), 

    # Uncomment the admin/doc line below to enable admin documentation: 
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

    # Uncomment the next line to enable the admin: 
    url(r'^polls/', include('polls.urls', namespace="polls")), 
    url(r'^admin/', include(admin.site.urls)), 
) 

Ve şimdi çalışıyor: sitede/urls.py günü

url(r'^polls/', include('polls.urls', namespace="polls")), 

, şimdi diyor.

+0

çalışma .. benim için de ... –