TurboGears-포함 사항
현재 문서에서 포함 태그를 사용하여 다른 XML 문서 (특히 HTML 문서)의 내용을 포함 할 수 있습니다. 이러한 포함을 활성화하려면 XInclude 네임 스페이스를 HTML 문서의 루트 요소에 선언해야합니다.
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:xi = "http://www.w3.org/2001/XInclude >
위의 선언은 include 지시문이 ‘xi’접두사. 현재 문서에 다른 html 페이지의 내용을 추가하려면 다음과 같이 xi : include 지시문을 사용하십시오.
<xi:include href = "somepage.html" />
다음 예제에서 root.py는 include.html을 노출하는 include () 컨트롤러를 포함합니다.
from hello.lib.base import BaseController
from tg import expose, request
class RootController(BaseController):
@expose('hello.templates.include')
def include(self):
return {}
제목 및 바닥 글 HTML
include.html에는 include 네임 스페이스가 선언되고 heading.html 및 footer.html의 내용이 추가됩니다. 다음은 templates \ include.html의 HTML 스크립트입니다.
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:xi = "http://www.w3.org/2001/XInclude">
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<xi:include href = "heading.html" />
<h2>main content </h2>
<xi:include href = "footer.html" />
</body>
</html>
다음은 templates \ heading.html 코드입니다.
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h1>This is page Header</h1>
</body>
</html>
다음은 templates \ footer.html입니다.
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h3>This is page footer</h3>
</body>
</html>
기어 박스를 사용하여 개발을 시작하고 http://localhost:8080/include브라우저에서. 렌더링 된 출력은 다음과 같습니다.
이러한 방식으로 뷰의 모듈 식 구성을 달성 할 수 있습니다. xi : include 지시문에 언급 된 리소스를 사용할 수없는 경우 오류가 발생합니다. 이러한 경우 xi : fallback을 사용하여 대체 리소스를로드 할 수 있습니다.
<xi:include href = “main.html”>
<xi:fallback href = ”default.html”/>
</xi.include>
컨텐츠 포함은 표현식을 포함 할 수있는 href 속성으로 동적으로 만들 수 있습니다.
root.py에 다음 컨트롤러를 추가하십시오.
@expose('hello.templates.ref-include')
def refinclude(self):
return {'pages':['heading','main','footer']}
다음 코드를 템플릿 폴더에 ref-include.html로 저장합니다.
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:py = "http://genshi.edgewall.org/"
xmlns:xi = "http://www.w3.org/2001/XInclude">
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<xi:include href = "${name}.html" py:for = "name in pages" />
</body>
</html>
서버를 시작하기 전에 템플릿 폴더에 heading.html, main.html 및 footer.html이 있는지 확인하십시오. 시작하다http://localhost:8082/refinclude 브라우저에서 다음 출력을 얻습니다.