Django {%url%}反向无效 [英] Django {% url %} reverse not working

查看:304
本文介绍了Django {%url%}反向无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Django 1.4项目中有一个看法:

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

这是按预期工作,打印出反转的URL,这是/ menus /.



在index.html模板里面(由这个视图调用)我有:

  { %url menus_index%} 

哪些导致/ menus / error中的NoReverseMatch。我的应用程序的urls.py是:




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

/ pre>

我的项目的urls.py文件中包含哪一个。



我做错了什么? / p>

更新:



以下是完整的index.html模板代码:

  {%extendsbase.html%} 
{%从未来%加载url}

{%block title% }
菜单索引
{%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>< /锂>
{%endfor%}
< / ul>
{%else%}
< p>没有菜单可用。< / p>
{%endif%}
{%endblock%}


解决方案

答案:使用{%url'menus_index'%}。来自未来%的{%加载网址}使报价成为 https ://docs.djangoproject.com/en/1.4/ref/templates/builtins/#url


I have a view in a Django 1.4 project:

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})

This works as expected and prints out the reversed URL which is /menus/.

Inside of the index.html template (which is called by this view) I have:

{% url menus_index %}

Which causes a NoReverseMatch at /menus/ error. Reverse for '' with arguments '()' and keyword arguments '{}' not found.

My application's urls.py is:

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

Which is included in my project's urls.py file.

What am I doing wrong?

Update:

Here is the full index.html template code:

{% 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 %}

解决方案

Answer: use {% url 'menus_index' %}. That {% load url from future %} makes the quotes a requirement per https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#url

这篇关于Django {%url%}反向无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆