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')
返回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',
/ pre>
url(r'^ $','index',name ='menus_index'),
url(r'^(?P< menu_id> \d +)/ $','detail',name ='menus_detail'),
)
我的项目的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屋!