3

AJAX リクエスト用の javascript/jquery ファイルで使用しようとしていますurl-namesが、この問題を解決できる解決策がいくつか見つかりました。私が現在使用しているものは次のとおりです。

JavaScript ファイルを提供する URL を定義します。

urls.py

url(r'^js/([\w\.\-]+)/([\w\.\-]+)/$', 'views.get_javascript_file', name='get_javascript_file')
url(r'^getmoredicus/$', 'load_discussions', name="load-discus"),

次に、JavaScript ファイルをレンダリングするビューを定義します。

ビュー.py:

def get_javascript_file(request, app_name, js_file):
'''
    Used to request and serve rendered javascript/jquery files.
'''
return render_to_response("%s/%s.js" % (app_name, js_file), 
                          context_instance=RequestContext(request))

html ファイルでは、get_javascript_fileurl を使用して、レンダリングされた JavaScript ファイルを取得できます。

html ファイル:

<script type="text/javascript" src="{% url get_javascript_file 'myapp' 'jsfile' %}"></script>

これで、どの JavaScript ファイルでも、url-namesthroughにアクセスできます{% url url-name %}

質問:

url-names1) JavaScriptファイルで使用するためのより良い/より高速な方法はありますか? これを達成するためにすでにいくつかのアプリが作成されていることは知っていますが、これを達成するための最良の方法について、全員 (django の専門家) の意見を求めたいと思います。

2) レンダリングされた JavaScript ファイルを最初にレンダリングした後にキャッシュして、後続の各リクエストで再度レンダリングする必要がないようにすることはできますか? はいの場合、どうすればそれを行うことができますか。

3) この方法では、アプリ フォルダーからスクリプト ファイルをレンダリングします。STATIC_ROOTビューから静的ファイルにアクセスする方法はありget_javascript_fileますか? これが本番環境でどのように機能するかを考えているところです。静的ファイルをアプリ フォルダーに配置してそこからアクセスするのではなく、アプリ フォルダーから静的ファイルにアクセスすることをお勧めSTATIC_URLしますか?

ノート

この質問の一部に答えるSOに関する質問がすでにいくつかあることは知っていますが、将来のdjango学習者のために、これを最後に理解したかっただけです。url-namesinjavascriptまたは anyを使用する最良の方法は何scriptですか?

4

1 に答える 1

2

私は、ビューのレンダリングを通じて外部 js を実行するのが好きではありません。特に、django-compressor などを使用して js ファイルを圧縮およびキャッシュしている場合。

外部ファイルを含める前に、スクリプトタグに変数を含めることを好みます。

<script>
    my_var = "{{ MY_PROPERTY }}"
</script>
<script type="text/javascript" src="{{ STATIC_URL }}js/external_script.js"></script>

その解決策も必ずしも理想的ではありませんが、私は他の解決策を受け入れます。

于 2013-03-05T01:31:29.683 に答える