【问题标题】:Django: URL template tag leads to 404, but correct when hard codedDjango:URL模板标签导致404,但硬编码时正确
【发布时间】:2014-01-30 21:47:35
【问题描述】:

通过投票教程修改它以制作博客。 (Django 1.6)

在 index.html 中,当它像这样硬编码时,我可以获得一个指向正确 URL 的超链接:

<h2><a href="/blog/{{ entry.id }}/">{{ entry.title }}</a></h2>

但是当我使用 URL 模板标签时,我得到一个 404(我在项目 urls.py 中命名博客)

<h2><a href="{$ url 'blog:detail' entry.id %}/">{{ entry.title }}</a></h2>

我得到的 404 页面将原始 Django 代码传递到 URL 中

Page not found (404)
Request Method: GET
Request URL:    http://localhost:8000/blog/%7B$%20url%20'blog:detail'%20entry.id%20%%7D/
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^polls/
^blog/ ^$ [name='index']
^blog/ ^(?P<entry_id>\d+)/$ [name='detail']
^blog/ ^(?P<entry_id>\d+)/comment/$ [name='comment']
^admin/
The current URL, blog/{$ url 'blog:detail' entry.id %}/, didn't match any of these.

这是博客应用程序中的 urls.py

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^(?P<entry_id>\d+)/$', views.detail, name='detail'),
    url(r'^(?P<entry_id>\d+)/comment/$', views.comment, name='comment'),
)

以下是相关观点:

def index(request):
    latest_entries = Entry.objects.order_by('-pub_date')[:5]
    tags = Tags.objects.filter()
    context = {'latest_entries': latest_entries, 'tags': tags}
    return render(request, 'entries/index.html', context)

def detail(request, entry_id):
    entry = get_object_or_404(Entry, pk=entry_id)
    return render(request, 'entries/detail.html', {'entry': entry})

【问题讨论】:

    标签: python django


    【解决方案1】:

    {$ 更改为{%

    <h2><a href="{% url 'blog:detail' entry.id %}/">{{ entry.title }}</a></h2>
    

    【讨论】:

    • 我们有几乎相同的时间 xD
    • 当我看到您的回复时,我以为我将代码复制到 Stack Overflow 时搞砸了,但是是的,就是这样。你让我意识到我的显示器太远了。感谢您和@markcial
    【解决方案2】:

    尝试替换您的模板标签,而不是

    {$ url 'blog:detail' entry.id %}
    

    {% url 'blog:detail' entry.id %}
    

    注意美元符号并使用百分号

    【讨论】:

      猜你喜欢
      • 2013-09-19
      • 2011-12-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2019-10-09
      相关资源
      最近更新 更多