2014-05-24 2 views
5

내 프로젝트 구조는이 mysite.conf.__init__플라스크

from flask import Flask 

app = Flask(__name__) 
app.debug = True 

내 생각은 이제 뷰를 생성하는 데 사용하는 다른 모든 모듈에 app를 가져올입니다

run.py 
lib/ 
mysite/ 
    conf/ 
     __init__.py (flask app) 
     settings.py 
    pages/ 
     templates/ 
      index.html 
     views.py 
     __init__.py 

이하 같다. 여기에는이 경우 모듈 pages이 있습니다. pages.views에서

나는

from mysite.conf import app 
app.run() 

아래 내가 갖는 같습니다 run.py에서이 응용 프로그램을 실행하면

from flask import render_template 
from mysite.conf import app 

@app.route('/') 
def index(): 
    return render_template('index.html') 

index.html 같은 일부 코드가 pages/templates

에 배치되어 있습니다 템플릿을 찾을 수 없습니다. 어떻게 고칠 수 있습니까? 왜 이런 일이 일어나는가!

기본적으로 나는 장고 사람이고, 모든 모듈에서보기를 생성 할 때마다 wsgi 객체를 가져올 때 많은 불편을 겪습니다. 다소 미친 듯이 느껴진다. 어떤면에서 순환 수입을 장려한다. 이것을 피할 수있는 방법이 있습니까?

+0

Try'render_template ('templates/index.html')' – ajkumar25

답변

10

Flask는 templates 디렉토리가 생성 된 모듈과 동일한 폴더에 있어야한다고 가정합니다. 그것은 mysite/conf/templates, 이 아닌mysite/pages/templates을 찾고 있습니다.

대신 다른 곳에서 볼 플라스크를 말할해야합니다 : 경로가 현재 모듈 경로에 상대적으로 해결로이 작동

app = Flask(__name__, template_folder='../pages/templates') 

합니다.

blueprints을 사용하지 않고 모듈 별 템플릿 디렉토리를 가질 수 없습니다. 일반적인 패턴은 템플릿을 분할하는 대신 templates 폴더의 하위 디렉터리를 사용하는 것입니다. 등이로드 된 templates/pages/index.html을 사용하십시오.

대체 방법은 하위 모듈 당 Blueprint 인스턴스를 사용하는 것입니다. 해당 청사진 인스턴스에 등록 된 모든보기에 사용되는 별도의 템플릿 폴더를 각 청사진에 제공 할 수 있습니다. 청사진의 모든 경로는 해당 청사진에 고유 한 접두사 (공란 일 수 있음)로 시작해야합니다.

+0

나는'person'과 같은 모듈을 더 가지고 있습니다. 여기서 나는'person/templates' 디렉토리를 들여다보고 싶다. 자동으로 수행하는 방법 .. – Iamcool

+0

@Iamcool : 모듈마다 청사진을 사용하거나 (자체 독립 템플릿 폴더를 구성 할 수 있음) 사용하지 마십시오. 일반적으로'templates /'와 같은'templates /'의 하위 폴더를 사용하고'render_template ('person/template.html')'을로드 할 것입니다. –

+0

나는 청사진을 들여다 보았다. 글쎄, 그들은 플러그 형 앱이 아니라고 말합니다. 우리가 Django의 앱과 비교한다면 ... 그들은 어떻게 다른가요? – Iamcool