2013-02-22 3 views
0

저는 장고를 처음 접합니다. 그래서 나는 잘못된 방향으로 가고있을 것입니다.보기에서 django 템플릿을 html로 보내십시오.

서버 목록에 대한 상태를 보여주는 테이블에 postgresql DB의 데이터를 표시하는 웹 페이지를 만들려고합니다. 나는 인쇄하는 경우

message = [] 
for res in data: 
    message.append("   <tr>") 
    message.append("   <td>" + str(res).split("'")[1] + "</td>") 
    if str(res).split("'")[3] == 'No': 
     message.append("   <td><FONT COLOR=\"008200\">Available</FONT> </td>") 
    else: 
     message.append("   <td><FONT COLOR=\"FF0000\">Down</FONT> </td>") 
    message.append("   </tr>") 

return render_to_response('health.html', {'res':message}, context_instance=RequestContext(request)) 

, 템플릿 I이가 내보기에

<div class"row"=""><div class="span3" style="background-color:lightyellow; margin-left:20px"> 
<table class="table table-bordered table-condensed"> 
     <thead> 
      <tr> 
      <th>Server</th> 
      <th>Status</th> 
      </tr> 
     </thead> 
     <tbody> 
     {{ res }} 
     </tbody> 
     </table> 
</div></div> 

의 일부입니다 대신 내가 기대하는 결과 HTML을 얻을 APPEND 일을.

현재로서는 해당 테이블의 웹 페이지에 아무 것도 표시되지 않습니다.

필자는 목록을 반드시 렌더링 할 것이라고는 기대하지 않지만 잘못된 형식 인 경우에도 테이블에 무엇인가 나타나야한다고 생각했습니다.

HTML 처리가 템플릿이 아니라보기에서 수행되어야합니까?

+0

프리젠 테이션 로직을 뷰에서 템플리트로 옮깁니다. 하지만 html을 보여주고 싶다면 {{res | safe}} – JoseP

답변

0

예, 일반적으로 템플릿에서 모든 HTML 처리를 수행하는 것이 가장 좋습니다. 이렇게하면 데이터베이스 액세스 로직을 디스플레이 로직에서 분리하여 커플 링을 줄일 수 있습니다. 또한 템플릿을 쉽게 다시 사용할 수 있음을 의미합니다.

따라서 적절한 함수를 가져 와서 변수로 템플릿에 전달하려면 view 함수를 사용해야합니다.

그래도 옳은 길을 가고 있습니다. {{res}} 변수가 제대로 표시 되려면 템플릿을 변경해야한다고 생각합니다.

<tbody> 
    {% for message in res %} 
    {{ message }} 
    {% endfor %} 
</tbody> 

이 템플릿에 전달 된 res 변수의 요소를 반복해야한다.

+0

템플릿에 "안전한"필터를 사용할 수 있습니다. 추가하려고했지만 표시 할 내용이 없습니다. – somethingelse

+0

Apache를 다시 시작하면 html txt가 표시됩니다. 계속 지저분해질거야. 도와 줘서 고마워. – somethingelse

+0

그랬습니다. 왜 txt를 출력하는 것일까? 템플릿에 출력을 붙여 넣으면 표시됩니다. – somethingelse

관련 문제