2013-03-03 2 views
0

Мои адреса не нужно захватить следующее:Джанго: нет обратного матч URL с несколькими параметрами

domain/forum-name/ 
domain/forum-name/topic-name 

У меня есть следующие определения URL:

url(r'^$', views.index_forums, name='index_forums'), 
url(r'^(?P<forum_name>[-\w]+)/(?P<topic_name>[-\w]+)/$', views.show_topic, name='show_topic'), 
url(r'^(?P<forum_name>[-\w]+)/$', views.index_topics, name='index_topics'), 

Когда я ударил URL как домен/имя -of-форум, я генерировать URL-адреса в HTML так:

{% url 'board:show_topic' forum_name|lower topic.title|lower %} 

Это дает мне «Обратный ... не найден» ошибка, и я не могу FIGU почему. Я неправильно использую «url»? Есть ли проблема с моим регулярным выражением? Благодаря!

Edit: добавление полной ошибки и шаблон:

NoReverseMatch at /random/ 
Reverse for 'show_topic' with arguments '(u'random', u'funny youtube videos')' and keyword arguments '{}' not found. 
Request Method: GET 
Request URL: http://localhost:8000/random/ 
Django Version: 1.5c2 
Exception Type: NoReverseMatch 
Exception Value:  
Reverse for 'show_topic' with arguments '(u'random', u'funny youtube videos')' and keyword arguments '{}' not found. 
Exception Location: /Users/travis/code/penv/lib/python2.7/site- packages/django/template/defaulttags.py in render, line 424 
Python Executable: /Users/travis/code/penv/bin/python 
Python Version: 2.7.2 

Reverse for 'show_topic' with arguments '(u'random', u'funny youtube videos')' and keyword arguments '{}' not found. 
1 {% extends "board/base.html" %} 
2 
3 {% block content %} 
4 {% if topic_list %} 
5 <ul> 
6 {% for topic in topic_list %} 
7  <li><a href="{% url 'board:show_topic' forum_name|lower topic.title|lower %}">{{topic.title}}</a></li> 
8 {% endfor %} 
9 </ul> 
10 {% else %} 
11 <p>No topics! <a href="/topic/new/">Make a new one</a>.</p> 
12 {% endif %} 
13 {% endblock %} 
+0

Можете ли вы опубликовать весь текст ошибки? – czarchaic

+0

Можете ли вы разместить свое мнение? –

+0

Добавлено в исходное сообщение – c4am95

ответ

2

Try:

{% url 'show_topic' forum_name|lower topic_name|lower %} 

Edit:

Ваш URL регулярное выражение не принимает пространства:

Попробуйте:

url(r'^(?P<forum_name>[-\w]+)/(?P<topic_name>[-\w\ ]+)/$', views.show_topic, name='show_topic'), 
+0

Ничего не меняет. У меня есть имена приложений, похожие на: url (r '^', include ('board.urls', namespace = "board")), – c4am95

+1

Какую версию django вы используете? Некоторые версии не принимают кавычки в именованных URL-адресах. –

+0

Последняя стабильность для 1.5 – c4am95

Смежные вопросы