2013-02-23 1 views
1

동시에 뷰에서 템플릿의 var와 javascript 라이브러리 (javascript.js)를 전달하고 싶습니다. 가능한가?Django는 view에서 동시에 두 개의 템플릿으로 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 %} 
+0

'자바 스크립트 라이브러리에 전달 하시겠습니까?' 변수가 HTML에 있다면 javascript.js 파일에서 사용할 수 있습니까? 왜 당신의 변수가 무엇인지, 그리고 당신이 그것으로하고 싶은 것을 (html과 javascript 둘 다) 말해 주시지 않겠습니까? –

답변

2

만,이를 달성하기위한 하나 개의 방법이 JS를하는 것입니다 자바 스크립트 파일 JS 유지하려는 가정 initialize 일부 구성 데이터를 수용 . 장고에 의해 렌더링 및 따라서 귀하의 상황에 액세스하면

javascript.js

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

template.html

<input type="submit" value="Submit" onclick="initialize({ 
    myvar: {{ value_from_django }}, 
    other_stuff: 10 
})"> 
+0

이 솔루션은 효과가 있지만, 단일보기에서 템플릿과 javascript.js에서 django 태그를 사용할 수 없다고 가정해야합니까? –

+0

javascript.js 파일을 템플릿에 직접 포함시키지 않는 한. {% include "static/javascript.js %}. 별도의 파일을 유지 관리 할 수 ​​있습니다. –

0

당신이하지에 데이터를 전달 바르가 귀하의 HTML 템플릿 (의 라이브러리에 변수를 "전달"해야합니다.

과 같이 스크립트 태그에 설정하면됩니다.

다음 JS 내에서 VARIABLE 또는 window.foo으로 참조 할 수 있습니다.

관련 문제