2017-12-04 2 views
0

Golang의 웹 페이지에 정보 표를 표시하기 위해 html/template 패키지를 사용하려고합니다. 템플릿의 현재 구현에는 표준 출력이 있습니다.Golang 템플릿을 사용하여 HTML 표를 표시하는 방법

템플릿으로 생성 된 페이지 콘텐츠를 내 웹 페이지를 렌더링하는 다른 기능으로 전달할 수 있기를 원합니다.

어떻게해야합니까?

아래에 첨부 된 코드에 대한 설명. 기본적으로, 나는 t.Execute (os.Stdout, persons)의 결과를 포착하고 싶습니다. 여기서 persons는 문자열의 조각입니다. t.Execute는 오류 만 반환한다는 것을 알고 있습니다. 그러나 사람 이름 값과 함께 템플리트 t를 표준 출력합니다. 저는 조합 된 템플릿과 사람 배열 텍스트를 대신 변수에 넣고 싶습니다. 내 코드에서 본문 변수에 내용을 할당하고 싶습니다.

t := template.Must(template.New("").Parse(`<table>{{range .}}<tr><td>{{.}}</td></tr>{{end}}</table>`)) 

    if err := t.Execute(os.Stdout, persons); err != nil { 
     log.Fatal(err) 
    } 
    title := "User Info Page" 
    p := &Page{Title: title, Body: []byte(body)} 
    renderTemplate(w, "view", p) 
} 

답변

3

템플릿을 bytes.Buffer에 실행합니다. 버퍼의 내용을 본문으로 사용하십시오.

os.Stdout.Write(body.Bytes()) 
+0

감사합니다 : 그것은 다음 템플릿을 실행 한 후 다음 코드를 추가, 표준 출력에 인쇄 할 필요도 있다면

t := template.Must(template.New("").Parse('<table>{{range .}}<tr><td>{{.}}</td></tr>{{end}}</table>')) var body bytes.Buffer if err := t.Execute(&body, persons); err != nil { log.Fatal(err) } title := "User Info Page" p := &Page{Title: title, Body: body.Bytes()} renderTemplate(w, "view", p) 

. 이것은 정답입니다. 설명서에서 Execute 메서드를 살펴본 결과 Writer가 필요합니다. 나는 이것을 받아 들일 것이다. – Ramil

관련 문제