2012-01-13 5 views
5

webapp2부터 시작하겠습니다. 제 영어는별로 좋지 않으므로 예제를 사용하여 문제를 설명하겠습니다 : 자동차 정보를 처리 할 응용 프로그램을 만들고 있다고 가정 해 봅니다.webapp2 - 템플릿에서 URL을 바꾸는 방법은 무엇입니까?

  • ViewHandler : (등등 엔진, 년, 브랜드, 모델,)의 모든 정보와 하나의 자동차에 대한보기를 표시합니다
  • 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

: 여기 http://webapp-improved.appspot.com/guide/routing.html

그것을 볼 수있는 방법에 위의 문서에서 예제입니다 : http://stackoverflow.com/questions/7081250/webapp2-jinja2-how-can-i-get-uri-for-working-in-jinja2-views – gmunkhbaatarmn

+0

나는 진자를 사용하지 않고 있지만 살펴볼 것입니다. 어쩌면 바뀔 수도 있습니다. 감사. – santiagobasulto

답변

8

webapp2.uri_for()가 최선의 방법이지만 명명 된 라우팅과 함께 사용해야합니다. 여기 uri_for와 조합 webapp2 라우팅에 대한 자세한 내용을보실 수 있습니다 : 당신이 webapp2 + jinja2는 이미 유래에 답변을 사용하는 경우

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/ko/latest/guide/routing.html로 변경되었습니다. – igniteflow

관련 문제