Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 29, 2011 21:14:14

cetver
От:
Зарегистрирован: 2011-05-15
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

url tag: Caught NoReverseMatch while rendering

#urls.py
places_url_regex = ur'''
^places
(
(?:/types/(?P<types>\d+(?:-\d+)*))
|
(?:/cuisines/(?P<cuisines>\d+(?:-\d+)*))
|
(?:/avg-bills/(?P<avg_bills>\d+(?:-\d+)*))
|
(?:/cities/(?P<cities>\d+(?:-\d+)*))
|
(?:/sectors/(?P<sectors>\d+(?:-\d+)*))
|
(?:/streets/(?P<streets>\d+(?:-\d+)*))
|
(?:/special/(?P<special>[cabins|calian|children\-animation|children\-room|parking|summer\-verandah|vip-room|wifi|smokers\-room]+))
|
(?:/with/(?P<w>[discounts]+))
|
(?:/page/(?P<page>\d+))
)*
/$
'''
places_url_regex = re.sub( ur'\s+', '', places_url_regex )
urlpatterns = patterns( '',
url( places_url_regex, 'app.places.views.places', name = 'url_places' ),
)
#views.py
def places(request, page = 1, special = '', types = '', cuisines = '', avg_bills = '', cities = '', sectors = '', streets = '', w = ''):
...
Если я пишу в адрессной строке:
/places/types/10/
или в шаблоне:
{% url url_places %}
- все работает, но если в шаблоне пишу:
{% url url_places types=10 %}
происходит исключение:
Caught NoReverseMatch while rendering: Reverse for ‘url_places’ with arguments ‘()’ and keyword arguments ‘{’types': 10}' not found.
Почему так происходит и как заставить это работать ?



Офлайн

#2 Сен. 30, 2011 10:11:20

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

url tag: Caught NoReverseMatch while rendering

Есть мнение, что Вы несколько преувеличиваете способности reverse match в джанге. Он хорош только для простых выражений типа r'/types/(\d+)/'. На мой взгляд лучше вьюху разбить на несколько, каждая из которых соответствует своей части приведенного Вами регулярного выражения.



Офлайн

#3 Сен. 30, 2011 12:29:22

cetver
От:
Зарегистрирован: 2011-05-15
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

url tag: Caught NoReverseMatch while rendering

В моем случае вьюх станет очень много. Хотелось бы найти более элегантное решение.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version