문제

<py:match path="foo">
    <?python
        import os
        href = select('@href').render()
        SOMEWHERE = ...  # what file contained the foo tag?
        path = os.path.abspath(os.path.join(os.path.dirname(SOMEWHERE), href)
        f = file(path,'r')
        # (do something interesting with f)
    ?>
</py:match>
...
<foo href="../path/relative/to/this/template/abcd.xyz"/>

위의 "어딘가"로 무엇을해야합니까? 나는 것을 원하는 href 파일과 관련하여 속성 foo 그것에 태그를 지정하십시오 href 다른 태그의 속성.

또는 PY : 매치 블록이 포함 된 파일은 무엇입니까? 파일과 다른 디렉토리에있을 수 있기 때문에 이것은 덜 좋습니다. foo 꼬리표.

덜 좋은 : 나는 Genshi 외부의 컨텍스트 인수로 렌더링하고있는 파일의 경로를 제공 할 수 있지만 위의 두 디렉토리와 다른 디렉토리에있을 수 있습니다.

도움이 되었습니까?

해결책

드라이버 프로그램 (예 : 입력 파일을 구문 분석하는 Python 프로그램)이 포함 된 파일의 디렉토리에서 실행되는지 확인해야합니다. foo 꼬리표. 그렇지 않으면, 상대 경로 (즉, 독자가 읽는 파일의 디렉토리로 실행되는 디렉토리에서 얻는 방법)를 Python 코드의 컨텍스트 인수로 전달하고이를 추가해야합니다. os.path.join 명령.

이 설정을 사용하여 (및 Fink 패키지 Genshi-PY26을 통해 MacOS X 10.6.3에 설치된 Genshi 0.6 사용) 명령 os.getcwd() 포함 된 파일의 현재 작업 디렉토리를 반환합니다. foo 꼬리표.

이러한 복잡한 경로 구성에 대해서도 사용하는 것이 좋습니다. path=os.path.normpath(path), 당신은 그 결과 HTML 코드에서 그러한 것들이 유출되기를 원하지 않을 수 있기 때문입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top