2012-06-13 5 views
2

일반적인 피라미드 웹 응용 프로그램 설정이 있습니다. 응용 프로그램 디렉토리 (Pyramid에서이 디렉토리의 이름이 무엇인지 모릅니다)에는 정적 템플릿과 ini .py 파일이 있습니다. 이 디렉토리에서 나는 특별한 보고서 템플릿을 저장하는 데 사용하는 static_content 디렉토리를 만들었습니다. 내보기 코드에서피라미드에서 파일을 열어 읽는 방법?

나는 static_content 디렉토리의 하위 디렉토리에있는 파일을 읽을 같은 것을 사용하고 있습니다 :

f = open("/static_content/abc/report_template.tpt" , "r") 

를 다음을 통해 내 초기화 평 파일에 내가 선을 추가 :

config.add_static_view("static_content", "static_content") 

어떻게하면 해결할 수 있습니까?

감사합니다, 마크 황

+1

정적 뷰를 제공해야하는 이유는 무엇입니까? 내가 직접 파일을 열려고하는 이유가 있다고 가정하고 있니? –

+0

각 회사마다 다른 보고서 템플릿 스타일이 있습니다. 그리고 보고서를 작성한 사람을 기반으로 우리는 그가 어느 회사인지 알 수 있습니다. 이 정보를 바탕으로 다른 보고서 템플릿을 열 필요가 있습니다. 이것이 자동으로 자동화 될 수 있다고 생각하지 않습니까? 어쩌면 내가 틀렸어. – Mark

+0

맞아,하지만 너의 모범을 이해하지 못해. 'config.add_static_view'는 디렉토리를 공개적으로 사용할 수 있도록합니다 (내용을 게시합니다). 'open'은 파일 서버 측을 읽습니다. 당신은 무엇을하려고합니까? 나는 그것이 양쪽 다라고 생각한다 ?? –

답변

2
f = open("/static_content/abc/report_template.tpt" , "r") 

파일의 경로에 선도적 인 슬래시는 당신이 그것을 전체 경로를 (파일이 정확한 위치에있다)주는거야 의미합니다. 당신이 상대 경로를하려면 슬래시를 벗어 : 이것은 현재 디렉토리에서 해당 경로 를 수행하도록 지시

f = open("static_content/abc/report_template.tpt" , "r") 

.

스크립트 파일에서 상대 경로를 작성하려면 this question을 참조하십시오.

+1

이것이 Nginx 뒤에 피라미드가 작동하는 방식과 더 관련이 있다고 생각합니다. 내 로컬 개발 컴퓨터에서/static_content/...... 작업. 하지만 일단 Nginx 뒤에 넣어, 나쁜 입출력 파일/디렉토리를 찾을 수 없다는 오류가 나타납니다. Nginx에서 루트를 설정하는 것과 관련이 있다면 생각하고 있나? – Mark

+1

@Mark -'open'은 빌트인 파이썬 함수입니다. 가장 좋은 추측은'/ static_content'가 실제로 개발 머신의 정확한 경로에 있지만 다른 하나의 다른 장소에 있다는 것입니다. –