【问题标题】:Django {% url %} reverse not workingDjango {% url %} 反向不起作用
【发布时间】:2012-04-19 19:26:03
【问题描述】:

我在一个 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 错误。未找到带有参数“()”和关键字参数“{}”的“”的反向操作。

我的应用程序的 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 %}

【问题讨论】:

    标签: python django django-templates django-views


    【解决方案1】:

    您应该使用 add 变量进行反向操作,如下所示:{% url "menus_index" menu.slug %}

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        也许这不是 menus_index?粘贴完整的模板代码。

        【讨论】:

          猜你喜欢
          • 2013-01-02
          • 1970-01-01
          • 1970-01-01
          • 2015-03-23
          • 2014-05-21
          • 2023-04-06
          • 2015-01-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多