2

この質問を元の質問から少し再定義して、目前の質問のより基本的なものにしました。私のファイルシステムの関連部分は次のとおりです。

env
    tutorial
        tutorial
            templates
                view.pt
            static
                myjava.js
            views.py
            __init__.py

現在、私のview.ptテンプレートには

<script type="text/javascript" src="/static/myjava.js"></script>

それから私の中に__init__.py、私は持っています

config.add_static_view(name='static',path='env/tutorial/tutorial/static')

最後に、myjava.js ファイル自体は非常に単純です。

document.write("hello from the javascript file")

このドキュメントに従おうとしています: http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/assets.html

しかし、今のところテキストは表示されていません。問題は私が与えているパスにあるように感じます。

私が持っていたいくつかのアイデア: config.add_static_view では、name='static' が紛らわしいです。ユーザーが URL www.domain.com/firstpage にアクセスできるようにしたいのですが、firstpage は JavaScript ファイル リソース (静的フォルダー内のファイル) を使用するテンプレートの結果です。これらの静的アセットは、www.domain.com/static/ で始まる URL にのみ適用されるのではないかと心配しています... これは有効な懸念事項ですか? view.pt テンプレートからレンダリングされたビューの静的リソースを提供するように config.add_static_view 関数に指示するにはどうすればよいですか?

編集:これがうまくいきました:

テンプレートでは、src="${request.static_url('tutorial:static/myjava.js')}" を使用します

次に、init .py で config.add_static_view(name='static',path='tutorial:static/') を使用します

4

2 に答える 2

2

テンプレート内の JavaScript リンクは、次のようになります。src="${request.static_url('tutorial:static/myjava.js')}"

これにより、アプリケーションをより簡単に再配置できます。

これはまた、パッケージの名前「チュートリアル」、コロン、「チュートリアル」パッケージの場所への相対パスを使用して、適切なアセット仕様を使用しますenv/tutorial/tutorial

編集済み: Configurator オブジェクトを忘れていました。

ここでは、 などの同様のアセット仕様を使用しますconfig.add_static_view('static', 'tutorial:static/')

次のように、ディレクトリごとに異なる静的ビューを作成することもできます。 config.add_static_view('images', 'tutorial:images/')

このようなことを行うと、アプリケーションのルートを別の場所に移動してhttp://mysite.com/stable/http://mysite.com/devel/アクセスを/書き換えることができます/stable/

静的ビューは、次のようなコードを使用して任意のテンプレートから呼び出すことができます${request.static_url('tutorial:images/icons/favicon.ico')}

于 2013-01-25T19:15:57.723 に答える
1

ここでドキュメントを読んでいましたが、それを呼び出すadd_static_viewとファイルのパスが変更されるように見えますか? ドキュメントを引用するには:

これは、/var/www/static に存在するファイルを /static URL プレフィックスのサブ URL として提供することを意味します。したがって、ユーザーがアプリケーションの URL /static/foo.css にアクセスすると、ファイル /var/www/static/foo.css が返されます。

あなたの場合、env/tutorial/tutorial/static「静的」を呼び出しているので、src="static/Three.js">代わりに試してみることをお勧めします

于 2013-01-19T23:43:14.050 に答える