2014-04-04 1 views
0

내가 뭘하고 싶은지이 렌더링은 jinja2 템플릿이지만 특정 환경 변수가 true (edit_mode)라면 "edit"를 모든 "a"태그의 href에 추가하고 싶습니다.모든 링크에 쿼리 문자열을 추가하는 Jinja2 사후 프로세스?

의사 코드 :

def render_template(tpl, ctx): 
    if ctx['edit_mode']: 
     return add_query_string_and_render(tpl, '?edit=1', **ctx) 
    else: 
     return tpl.render(**ctx) 

내가 생각 한 다음 메커니즘 :

  • 은 통해
  • 사후 처리 소스를 BeautifulSoup로로 렌더링 된 HTML을 구문 분석하고이를 변경 (추한,하지만 작동) 컴파일하기 전에 jinja2 확장을 사용하지만 캐싱을 사용하지 않도록 설정해야합니다.

또 다른 우아한 해결책이 있습니까?

답변

0

왜 라우팅 수준에서 추가하지 않습니까? "편집"이 다른 방식으로 라우팅되고 있습니까? 그래서 edit_mode가 쿼리 매개 변수로 전달되고 있기 때문에 그것이 실제로 작동하지 않습니다

@app.route('page/', defaults={'edit': app.config['edit_mode']}) 
# if edit do something here 

의 라인 (또는 당신이 허용 있다면 자바 스크립트를 사용하여 매우 쉽게 그것을 할 수 ..)

+0

함께 뭔가 현재 페이지를 표시 한 다음 렌더링시 jinja2 컨텍스트에 넣습니다. 앱마다 다르므로 사용자 설정과 다릅니다. – amirpc

관련 문제