2012-12-02 3 views
1

Google App Engine에서 이미지, html 파일 및 javascript를 사용하는 데 문제가 있습니다. 내 응용 프로그램 폴더에 static이라는 폴더가 있습니다. 정적 폴더에는 'images', 'html'및 'javascript'라는 3 개의 다른 폴더가 있습니다. 다음과 같이 내 애플리케이션 제목의 내 핸들러 부분이며, 내가 함께 jinja2를 사용하여 HTML 렌더링Google App Engine yaml 파일 구성

self.response.out.write('<img src="images/image.png">') 

handlers: 
- url: /html 
    static_dir: static/html 

- url: /javascript 
    static_dir: static/javascript 

- url: /images 
    static_dir: static/images 

- url: /.* 
    script: index.app 

내가 가진 이미지를 액세스하려고,

jinja_environment = jinja2.Environment(autoescape=True, 
        loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'html'))) 

template = jinja_environment.get_template('index.html') 
self.response.out.write(template.render(template_values)) 

jinja의 템플릿을 찾을 수없고 이미지도 찾을 수 없다는 오류가 나타납니다. 이것이 Google App Engine에서 업로드 및 사용 파일을 사용하는 올바른 방법이라고 생각했지만 분명히 잘못되었습니다.

Google App Engine이있는 폴더에서 파일을 사용할 수있는 적절한 방법은 무엇입니까?

답변

1

Jinja를 사용하면 HTML을 쓰는 템플릿을 렌더링합니다. 그것은 정적 게재가 아닙니다.

그리고 app.yaml에서 정적/이미지 또는 정적/html을 사용하십시오. 하지만 코드에서 다른 경로를 사용하십시오 !! 정적 폴더가 없습니다.

정적 폴더가 있고 해당 폴더에이 폴더 이미지 그래서 만약 :

self.response.out.write('<img src="/images/image.png">') 

그리고 당신의 로더를 다음 신사의 HTML 지금 노력하고 있습니다

jinja_environment = jinja2.Environment(autoescape=True, 
        loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__),'static', 'html'))) 
+0

하지만, 난 여전히 수 없습니다 이미지 또는 자바 스크립트가 작동하도록하십시오. 나는 ('

1

HTML과 함께 템플릿 시스템을 사용하려는 경우 정적 파일이 응용 프로그램 파일과는 별도의 파일 시스템에 저장되어 있기 때문에 static_dir으로 선언하지 않으려 고합니다. 렌더링 할 수 없습니다. os.path.dirname(__file__).....을 사용하면 지정한 static 디렉토리와 다른 응용 프로그램의 파일 시스템에있는 파일을 찾고 있습니다. 따라서 가장 먼저 시도해 보는 것은 핸들러에서 다음을 제거하는 것입니다.

- url: /html 
    static_dir: static/html 

그러면 응용 프로그램 파일 시스템을 찾고 (잘하면 :) :) 찾을 것입니다. 귀하의 이미지 처리기 괜찮아 보이는 그래서 나는 먼저 시도하고 차이가 있는지 확인합니다.