Python Django';民意测验';不是已注册的命名空间

Python Django';民意测验';不是已注册的命名空间,python,django,namespaces,Python,Django,Namespaces,我正在[本][1]教程中学习Django。在这一步之前,一切都运转良好: 现在从以下位置更改polls/index.html模板: 这是我的回溯: Environment: Request Method: GET Request URL: http://127.0.0.1:8000/polls/ Django Version: 1.6.4 Python Version: 3.4.0 Installed Applications: ('django.contrib.admin', 'dja

我正在[本][1]教程中学习Django。在这一步之前,一切都运转良好:

现在从以下位置更改polls/index.html模板:

这是我的回溯:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/polls/

Django Version: 1.6.4
Python Version: 3.4.0
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'polls')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Template error:
In template D:\dziango\strona1\polls\templates\polls\index.html, error at line 1
   'polls' is not a registered namespace
   1 : {% if latest_poll_list %}
    <ul>
    {% for poll in latest_poll_list %}
        <li><a href=" {% url 'polls:detail' poll.id %} ">{{ poll.question }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>Nie ma ankiet.</p>
{% endif %}

Traceback:
File "D:\Programy\Python 3.4\lib\site-packages\django\core\handlers\base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\dziango\strona1\polls\views.py" in index
  11.     return render(request, 'polls/index.html', context)
File "D:\Programy\Python 3.4\lib\site-packages\django\shortcuts\__init__.py" in render
  53.     return HttpResponse(loader.render_to_string(*args, **kwargs),
File "D:\Programy\Python 3.4\lib\site-packages\django\template\loader.py" in render_to_string
  169.         return t.render(context_instance)
File "D:\Programy\Python 3.4\lib\site-packages\django\template\base.py" in render
  140.             return self._render(context)
File "D:\Programy\Python 3.4\lib\site-packages\django\template\base.py" in _render
  134.         return self.nodelist.render(context)
File "D:\Programy\Python 3.4\lib\site-packages\django\template\base.py" in render
  840.                 bit = self.render_node(node, context)
File "D:\Programy\Python 3.4\lib\site-packages\django\template\debug.py" in render_node
  78.             return node.render(context)
File "D:\Programy\Python 3.4\lib\site-packages\django\template\defaulttags.py" in render
  305.                 return nodelist.render(context)
File "D:\Programy\Python 3.4\lib\site-packages\django\template\base.py" in render
  840.                 bit = self.render_node(node, context)
File "D:\Programy\Python 3.4\lib\site-packages\django\template\debug.py" in render_node
  78.             return node.render(context)
File "D:\Programy\Python 3.4\lib\site-packages\django\template\defaulttags.py" in render
  196.                         nodelist.append(node.render(context))
File "D:\Programy\Python 3.4\lib\site-packages\django\template\defaulttags.py" in render
  447.                         six.reraise(*exc_info)
File "D:\Programy\Python 3.4\lib\site-packages\django\utils\six.py" in reraise
  550.         raise value
File "D:\Programy\Python 3.4\lib\site-packages\django\template\defaulttags.py" in render
  433.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=context.current_app)
File "D:\Programy\Python 3.4\lib\site-packages\django\core\urlresolvers.py" in reverse
  528.                                          key)

Exception Type: NoReverseMatch at /polls/
Exception Value: 'polls' is not a registered namespace
这是polls/views.py:

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from django.core.urlresolvers import reverse

from polls.models import Choice, Poll

# Create your views here.
def index(request):
    latest_poll_list = Poll.objects.order_by('-pub_date')[:5]
    context = {'latest_poll_list': latest_poll_list }
    return render(request, 'polls/index.html', context)

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

def results(request, poll_id):
    return HttpResponse("Wyniki ankiety %s!" %poll_id)

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':"Nie wybrałeś żadnej opcji.",
            })
    else:
        selected_choice.votes += 1
        selected_choice.save()
    return HttpResponse(reverse('polls:results', args=(p.id,)))
polls/url.py:

from django.conf.urls import patterns, url

from polls import views


urlpatterns = patterns('',
    # ex: /polls/
    url(r'^$', views.index, name='index'),
    # ex: /polls/5/
    url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
    # ex: /polls/5/results
    url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
    # ex: /polls/5/vote
    url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)
来自django.conf.url导入模式,url
从轮询导入视图
urlpatterns=模式(“”,
#例如:投票/
url(r'^$',views.index,name='index'),
#ex:/polls/5/
url(r'^(?P\d+/$),views.detail,name='detail'),
#ex:/polls/5/结果
url(r'^(?P\d+)/results/$',views.results,name='results'),
#ex:/polls/5/投票
url(r'^(?P\d+)/vote/$',views.vote,name='vote'),
)
更新:
好吧,我犯了一个愚蠢的错误,把我的url.py放错了目录。。抱歉

我想您在包含轮询URL时忘了设置名称空间

在根urlconf文件中

改变

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


是的,名称空间问题对我来说也是如此——上面的回答帮助了我

在浏览器上输入服务器链接时,确保您处于/polls而不是/admin/polls中非常重要

此外,这也适用于path

对于mysite/polls/url,请添加下面的代码行

app_name = 'polls'
然后,您的mysite/mysite/url应该如下所示:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls', namespace="polls")),
    path('admin/', admin.site.urls),
]

您应该像下面那样在
polls/url.py
中添加应用程序名称,我也遇到了同样的问题,但通过添加以下内容解决了这个问题:


app\u name='polls'

请不要这样删除问题文本。我已还原您最近的两次编辑。请重新启动web服务器。就是这样。在1.9.5版中,first on仍然有效。在1.8.5中,第一个不起作用。我不得不换到第二句话
from django.conf.urls import patterns, url

from polls import views


urlpatterns = patterns('',
    # ex: /polls/
    url(r'^$', views.index, name='index'),
    # ex: /polls/5/
    url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
    # ex: /polls/5/results
    url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
    # ex: /polls/5/vote
    url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)
url(r'^polls/', include('polls.urls')),
url(r'^polls/', include('polls.urls', namespace="polls")),
app_name = 'polls'
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls', namespace="polls")),
    path('admin/', admin.site.urls),
]