2013-04-17 22 views
6

Tôi đang cố gắng thực hiện hướng dẫn django. Tôi đang trên Tutorial 04. Tôi đã nhận như sau:Hướng dẫn Django 04 NoReverseMatch tại/polls/1/- u'polls 'không phải là không gian tên đã đăng ký

  • Django 1.5.1 (64-bit)
  • Python 2.7 (64-bit)

Trên chi tiết trang, nó nói:

NoReverseMatch at /polls/1/ 

Nó nói: u'polls 'không phải là không gian tên đã đăng ký.

các cuộc thăm dò/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,))) 

các cuộc thăm dò/urls.py:

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'), 
) 

các cuộc thăm dò/templates/các cuộc thăm dò/detail.html

{% 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> 

Trả lời

20

Đừng bận tâm. Tôi chỉ bỏ lỡ một bước. Tôi chỉ thay đổi dòng từ:

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

Để:

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

On trang web/urls.py, bây giờ nó nói:

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)), 
) 

Và bây giờ nó hoạt động.

+0

làm việc .. cho tôi cũng ... –

Các vấn đề liên quan