1

ビューからテンプレートとjavascriptライブラリ(javascript.js)に同時にvarを渡したいです。出来ますか?

view.py:

def setAppOptions(request, map_name):
    if request.user.is_authenticated():
        app_selected = EzApp.objects.get(app_name=app_name, created_by=request.user)
        formset = ezAppOptionFormSet(user=request.user, instance=app_selected)
        if request.method == 'POST':
            formset = ezAppOptionFormSet(request.POST, instance=app_selected, user=request.user)
            if formset.is_valid():
                formset.save()

        return render_to_response("manage_app_options.html", {'formset': formset}, context_instance=RequestContext(request)) 
    else:
        error_msg = u"You are not logged in"
        return HttpResponseServerError(error_msg)

レンプレート:

{% extends "basemap.html" %}
{% block library %}
#I want to pass var to this library and to this template in the same time...
<script type="text/javascript" src="/static/javascript.js"></script>
{% endblock %}
{% block content %}
<table border="1">
<tr>
<td>
    <h1>Define App options</h1>
    {% if formset.errors %}
        <p style="color: red;">
            Please correct the error{{ formset.errors|pluralize }} below.
        </p>
    {% endif %}
    <form method="post" action="" encrypt="multipart/form-data">{% csrf_token %}
            {{ formset.as_p }} 
        <input type="submit" value="Submit" onclick="initialize()">
    </form>
</td>
</tr>
</table>
{% endblock %}
4

2 に答える 2

2

javascriptファイルをjsのみに保持したい場合、これを実現する1つの方法は、jsにinitializeいくつかの構成データを受け入れさせることです。HTMLテンプレート(djangoによってレンダリングされるため、データを渡すコンテキスト変数にアクセスできます)

javascript.js

...
function initialize(options) {
...

template.html

<input type="submit" value="Submit" onclick="initialize({
    myvar: {{ value_from_django }},
    other_stuff: 10
})">
于 2013-02-23T16:18:38.910 に答える
0

変数をライブラリに「渡す」必要はありません。

次のようにスクリプトタグに設定するだけです。

{% block library %}
<script type="text/javascript">
    var foo = "{{ variable }}";
</script>
<script type="text/javascript" src="/static/javascript.js"></script>
{% endblock %}

VARIABLEその後、JS内でまたはとして参照できますwindow.foo

于 2013-02-25T08:31:36.630 に答える