私はアプリケーションに取り組んでおり、openshiftでホストされ、bottle.pyクイックスタートの例(https://github.com/openshift/bottle-openshift-quickstart)に基づいて構築されていますが、静的ファイルを正しく使用するのに苦労しました。ボトルに組み込まれたサーバーで動作するローカルバージョンがありますが、ローカルで動作するものをopenshiftアプリケーションに転送すると、動作が異なります。
私のローカルmain.tplでは、次の行を使用して、ロードする必要のあるファイルを示しています。
<link rel="stylesheet" href="{{ get_url('static', file_name='base.css') }}">
<link rel="stylesheet" href="{{ get_url('static', file_name='skeleton.css') }}">
<link rel="stylesheet" href="{{ get_url('static', file_name='layout.css') }}">
私のローカルapp.pyで、次のコードは正しいファイルを提供しようとします...
app = default_app()
@route('/')
@view('main.tpl')
def index():
return {'get_url': app.get_url}
@route('/static/<file_name>', name="static")
def send_static(file_name):
if file_name[-3:] == 'css':
return static_file(file_name, root=os.path.join(os.getcwd(), 'static', 'styles'))
send_static
条件は、cssファイルのルートロケーションを持つ関数やjsファイルのルートロケーションを持つ関数など、いくつかの同様の関数を記述せずに/staticディレクトリを整理する方法を見つけようとしていたためです。
コードがopenshiftで使用されると、機能しなくなります。ローカルバージョンは表示されたページに「/static/styles/base.css」を挿入しますが、openshiftバージョンは「/static/base.css」のみを挿入します。cssファイルをロードするために、私は次のコードに出くわしました。
私のmain.tplは同じままです...
<link rel="stylesheet" href="{{ get_url('static', file_name='base.css') }}">
<link rel="stylesheet" href="{{ get_url('static', file_name='skeleton.css') }}">
<link rel="stylesheet" href="{{ get_url('static', file_name='layout.css') }}">
しかし、私のopenshift app.pyでは、サブディレクトリをルートに明示的に配置する必要がありました
application = default_app()
@route('/')
@view('main.tpl')
def index():
return {'get_url': application.get_url}
@route('/static/styles/<file_name>', name="static")
def send_static(file_name):
if file_name[-3:] == 'css':
root_dir = os.path.join(os.getcwd(), 'static', 'styles')
return static_file(file_name, root=root_dir)
違いを引き起こすopenshiftサーバー環境について何かが足りませんか?アプリは動作していますが、cssファイルをロードして表示する適切な方法を知りたいです。
ありがとう。