Django 'Umfragen' ist nicht einen registrierten Namensraum
Lerne ich Django von [DIESEM][1] - tutorial. Alles war perfekt bis zu diesem Schritt:
Jetzt ändern Sie Ihre polls/index.html Vorlage aus:
<li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
Punkt, an dem Namespace detail-Ansicht:
<li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a></li>
Sehen Sie den gesamten Abschnitt [HIER][2].
Und das ist, was passiert ist, nachdem ich änderte 'detail' in 'Umfragen:detail':
NoReverseMatch at /polls/
'polls' is not a registered namespace
Request Method: GET
Request URL: http://127.0.0.1:8000/polls/
Django Version: 1.6.4
Exception Type: NoReverseMatch
Exception Value:
'polls' is not a registered namespace
Exception Location: D:\Programy\Python 3.4\lib\site-packages\django\core\urlresolvers.py in reverse, line 528
Python Executable: D:\Programy\Python 3.4\python.exe
Python Version: 3.4.0
Python Path:
['D:\\dziango\\strona1',
'D:\\Programy\\Python 3.4\\python34.zip',
'D:\\Programy\\Python 3.4\\DLLs',
'D:\\Programy\\Python 3.4\\lib',
'D:\\Programy\\Python 3.4',
'D:\\Programy\\Python 3.4\\lib\\site-packages']
Server time: Wed, 21 May 2014 16:36:13 +0200
und hier ist mein Traceback:
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
Ich habe versucht, jede einzelne Lösung von [DIESEM][3] ähnliches Thema, aber keiner von Ihnen arbeitet für mich.
Ich glaube nicht, füge meinen code hier, weil ich schrieb es alle aus dem tutorial und es ist genau das gleiche. Alles, was ich Tat war getan Schritt für Schritt nach.
Wenn Sie aber meinen code sowieso, bitte sagen und ich werde es hier zu setzen.
Sorry für mein Englisch.
== EDIT ==
hier ist mein root urls.py Datei:
from django.conf.urls import patterns, url, include
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^polls/', include('polls.urls', namespace="polls")),
url(r'^admin/', include(admin.site.urls)),
)
- und dies ist 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/urls.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'),
)
UPDATE:
Okay, ich habe einen dummen Fehler, indem ich urls.py im falschen Verzeichnis.. sorry
- Bitte entfernen Sie nicht die Frage-text so. Ich habe zurückgesetzt, Ihre letzten beiden Bearbeitungen.
- Starten Sie den web-server. Nur, die.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Sie vergessen haben, legen Sie die namespace-wenn auch die Umfragen urls.
In der root-urlconf Datei
Ändern
zu
Ja, namespace-Problem für mich auch - die obige Antwort hat mir geholfen!
Wirklich wichtig, um sicherzustellen, dass Sie in /Umfragen nicht /admin/polls, wenn Sie die Eingabe Ihrer server-link auf der browser.
Auch, das funktioniert in den Weg.
Für mysite/Umfragen/urls - bitte fügen Sie die folgende Zeile von code
und dann auch Ihre mysite/mysite/urls sollte wie folgt Aussehen: