2012-01-13 3 views
5

Я начинаю с webapp2. Мой английский не очень хорош, поэтому я буду использовать пример , чтобы объяснить мою проблему: Предположим, я создаю приложение, которое будет обрабатывать информацию о машинах.webapp2 - Как отменить URL-адрес в шаблонах?

Я эти обработчики:

  • : обработки просмотров будет отображаться представление для одного автомобиля, со всеми его информации (двигателя, год выпуска, марка, модель и т.п ..)
  • ListHandler : отобразит все автомобили в приложении, с ссылкой на страницу просмотра.

Проблема в том, что я не могу построить эту ссылку для одного вида.

Я мог бы сделать это в шаблоне:

<ul> 
    <li><a href='/cars/view/{{car.id}}'>{{car.model}}</a></li> 
</ul> 

, но не нравится, что мне было интересно, если есть какой-то способ сделать его похожим на Джанго, (где это DRY принцип в конце концов?) разрешая URL-адрес в шаблоне, например:

<ul> 
    <li><a href='{% url cars.view car.id}'>{{car.model}}</a></li> 
</ul> 

Возможно, его нет в шаблоне. Я попробовал webapp2.url_for(), но не помог.

Большое спасибо!

+2

Если вы используете webapp2 + jinja2 его уже отвечая на StackOverflow: http://stackoverflow.com/questions/7081250/webapp2-jinja2-how-can-i-get-uri-for-working-in-jinja2-views – gmunkhbaatarmn

+0

Я не использую jinja, но я посмотрю и, возможно, измениться. Благодарю. – santiagobasulto

ответ

8

webapp2.uri_for() - ваш лучший выбор, но вы должны использовать его в сочетании с именованной маршрутизацией. Вы можете прочитать больше о webapp2 маршрутизации в сочетании с uri_for здесь: http://webapp-improved.appspot.com/guide/routing.html

Вот пример из приведенных выше статей о том, как это может выглядеть:

app = webapp2.WSGIApplication([ 
    webapp2.Route('/', handler='handlers.HomeHandler', name='home'), 
    webapp2.Route('/wiki', handler=WikiHandler, name='wiki'), 
    webapp2.Route('/wiki/<page>', handler=WikiHandler, name='wiki-page'), 
]) 

#/
uri = uri_for('home') 

# http://localhost:8080/ 
uri = uri_for('home', _full=True) 

# /wiki 
uri = uri_for('wiki') 

# http://localhost:8080/wiki 
uri = uri_for('wiki', _full=True) 

# http://localhost:8080/wiki#my-heading 
uri = uri_for('wiki', _full=True, _fragment='my-heading') 

# /wiki/my-first-page 
uri = uri_for('wiki-page', page='my-first-page') 

# /wiki/my-first-page?format=atom 
uri = uri_for('wiki-page', page='my-first-page', format='atom') 
+0

Ссылка для документов была изменена на http://webapp2.readthedocs.io/en/latest/guide/routing.html. – igniteflow

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