2013-06-05 2 views
2

나는 클라이언트에 데이터를 보내는 플라스크 백엔드를 가지고있다. 그런 다음 클라이언트 측의 일부 JS는 해당 데이터를 사용하여 한 행의 데이터와 클릭 가능한 노드가있는 d3 디스플레이가있는 행 아래의 다른 영역을 포함하는 페이지를 구성합니다.Flask Template에서 include를 동적으로 사용하려면 어떻게해야합니까?

노드는 백엔드의 다른 모델 및 다른 html 템플리트에 따라 다른 특성을 갖습니다. 어떤 유형이 주어지면 클릭 할 때 위의 행에 다른 HTML 템플릿이 표시됩니다.

JS에서 템플릿을 어떻게 설정합니까? 나는 다음과 같은 일을 시도했다 :

$("#div_id").innerHTML = "{% set obj = " + obj + "%}{% include '" + obj_template_file + "' %}" 

그 (물론) 물론 작동하지 않았다. 탈출을 돌보고 난 후에, 그 문자열을 표시합니다. hide를 사용하는 것처럼 더러운 방법을 생각하고 자유롭게 보여 주지만 현명한 것은 아닙니다.

+0

'obj *'변수가 요청 인수 인 앱 내 함수를 호출하고 Ajax 호출의 일부로 렌더링 된 템플릿을 반환하도록 코드를 조정할 수 있습니까? – Bartek

+0

노드 중 하나를 클릭 할 때마다 아약스 요청을 하시겠습니까? – user592419

+0

아마도 응용 프로그램의 복잡성을 알 수는 없습니다. 주로 자바 스크립트 내에서 계산 된 데이터를 기반으로 템플릿을 렌더링하고 싶으므로 일괄 요청으로 보내거나 각 셀의 서버에서 렌더링 된 템플릿을 반환하거나 단순히 자바 스크립트를 사용한다는 생각을 들여다 볼 수도 있습니다 이러한 셀을 렌더링하는 템플리트는 http 요청을 저장합니다. – Bartek

답변

1

"클라이언트에 데이터 전송"이 무슨 뜻인지 명확하지 않습니다. 당신처럼 루트에서 base_template 인수를 전달할 수 있습니다

@auth.route('/<path:path>', methods=['GET', 'POST']) 
def password_reset_request(): 
    if path ==2: 
     base_template = "jay.html" 
    if path ==3: 
     base_template = "blue.html" 
    ... 
    return render_template('auth/reset_password.html', base_template=base_template) 

과 템플릿 :

{% extends base_template %} 

는 다음 자바 스크립트 프론트 엔드에서 그냥 URL을 얻을 필요가있다.

관련 문제