【发布时间】:2014-10-22 16:51:02
【问题描述】:
我是第一次按照教程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/ 命名空间,但同样没有乐趣。
我的 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,现在它也起作用了。我在每次检查之前都重新启动了服务器。我很烦。但至少它是有效的。
【问题讨论】:
-
看起来这不是您模板中的确切代码。你能复制粘贴确切的代码吗?
-
模板的其余部分真的有效吗?似乎它实际上并没有被解析,所以你在链接中得到了原始模板标签。
-
是的,我也是这么想的,但是在我将链接切换到 {% url %} 标签之前它工作正常。我错过了导入还是什么?
-
我刚刚遇到了一个类似的问题,但在教程的后面。索引页面突然停止工作,就像你描述的那样它以前很好,我没有碰过它。重新启动服务器修复它。一定是服务器出了点问题。
标签: python django django-templates django-urls