簡體   English   中英

Django {% url %} 反向不起作用

[英]Django {% url %} reverse not working

我在 Django 1.4 項目中有一個視圖:

def index(request):
    print reverse('menus_index')
    latest_menu_list = Menu.objects.all().order_by('name')
    return render_to_response('menus/index.html', {'latest_menu_list': latest_menu_list})

這按預期工作並打印出相反的 URL,即 /menus/。

在 index.html 模板(由此視圖調用)中,我有:

{% url menus_index %}

這會在 /menus/ 錯誤中導致 NoReverseMatch。 與 arguments '()' 和關鍵字 arguments '{}' 未找到的 '' 反向。

我的應用程序的 urls.py 是:

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

這包含在我項目的 urls.py 文件中。

我究竟做錯了什么?

更新:

這是完整的 index.html 模板代碼:

{% extends "base.html" %}
{% load url from future %}

{% block title %}
Menu Index
{% endblock %}

{% block content %}
{% if latest_menu_list %}
<ul>
    {% for menu in latest_menu_list %}
    <li><a href="{% url menus_index %}/{{ menu.id }}/">{{ menu.name }}</a></li>
    {% endfor %}
</ul>
{% else %}
   <p>No menus are available.</p>
{% endif %}
{% endblock %}

答案:使用 {% url 'menus_index' %}。 {% load url from future %} 使引用成為每個https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#url的要求

也許這不是 menus_index? 粘貼完整的模板代碼。

你應該為反向使用添加變量,像這樣: {% url "menus_index" menu.slug %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM