我正在按照教程https://docs.djangoproject.com/en/1.6/intro/tutorial03/
首次查看django 到目前为止,它一帆风顺。我在删除硬编码网址部分遇到了麻烦。我正在使用Django 1.6.6。当我从以下位置更改硬编码的网址时
<li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
为:
<li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
我收到404错误如下:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/polls/%7B%%20url%20'detail'%20poll.id%20%7D
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^polls/ ^$ [name='index']
^polls/ ^(?P<poll_id>\d+)/$ [name='detail']
^polls/ ^(?P<poll_id>\d+)/results/$ [name='results']
^polls/ ^(?P<poll_id>\d+)/vote/$ [name='vote']
^admin/
The current URL, polls/{% url 'detail' poll.id }, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
地址栏中显示的网址是
mylocalenv/polls/%7B%%20url%20%27detail%27%20poll.id%20%7D
我已经尝试从'详细'中删除引号,但鉴于我在django 1.6.6上,我不应该这样做。它也没用。我也尝试过向前跳过一点,并在urls.py中包含/ polls / namespace,但是再一次,没有快乐。
我的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'),
)
我的index.html模板中的确切代码是:
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
<li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
明白了
但令人沮丧的是,我不知道为什么。出于对我的index.html的绝望,我开始在这一行上使用index.html文件:
<li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
由于没有逻辑原因,我将poll.id更改为poll_id。正如我所料,重新加载打破了index.html。当我把它改回poll.id一切正常。这毫无意义。我甚至ctrl ^ z回到以前不能正常工作的index.html,现在它也在工作。我在每次检查前都重新启动了服务器。我很烦。但至少它正在发挥作用。
答案 0 :(得分:3)
回溯中的这一行表明你在结束大括号之前错过了%
。
The current URL, polls/{% url 'detail' poll.id }, didn't match any of these.
答案 1 :(得分:0)
即便如此,我遇到了这个问题,对我而言,原因是我在{ %
和% }
之间留出了空格,因为正确的语法是{%
和%}
。为了完整起见,我在下面给出了正确和错误的语法 -
正确的语法 - <li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
语法错误 - <li><a href="{ % url 'detail' poll.id % }">{{ poll.question }}</a></li>
答案 2 :(得分:0)
检查您的 polls/urls.py 文件,确保您的 urlpatterns 是 [],而不是 {}
float: left