2017-02-23 35 views
0

我想從我的Django窗體中拾取RadioSelectBox值到我的模板與JavaScript部分。但我沒有克服得到這個變量,並把它放在我的模板中。不要拿起Django窗體值到JavaScript函數

我有一個非常簡單的形式:

def ChoiceTheme(request) : 

    if request.method == 'POST': 

     form = ThemeForm(request.POST or None) 

     if form.is_valid(): 
      theme = form.instance.favorite_theme 
      print theme 
      post = form.save() 
      return HttpResponseRedirect(reverse('accueil'), {"theme":theme}) 

    else: 
     form = ThemeForm() 

    context = { 
     "form":form, 
    } 

    return render(request, 'Theme.html', context) 

我得到完全與print theme良好的字段值。

但我想這個變量放在我的HTML模板:

{% block content %} 

<style> 
    ul li { 
     list-style: none; 
    } 
</style> 

<div class = "col-sm-8"> 
     <form class = "form" method='POST' action=''> {% csrf_token %} 
       <h3> <span class="glyphicon glyphicon-file"></span> Choix du thème DatasystemsEC </h3> 
       <br></br> 
       {{ form }} 
       <br></br> 
       <button> Valider le thème </button> 

      <script> 
      theme = "{{ }}" 
      $(function() { 
      $('button').click(function() { 
       alert("Vous avez choisi le thème : " + theme); 
      }); 
      })(jQuery); 
      </script> 
     </form> 
</div> 

{% endblock content %} 

我有theme = {{ theme }}但我警告窗口只顯示:

VOUS avez CHOISI樂主題:

你有什麼想法嗎?我非常甲硅烷這一點,因爲我看不到的方式..

+0

在你的javascript中,我讀'theme =「{{}}」'。這只是一個錯字嗎? – albar

+0

是的,我沒有找到如何在裏面寫入我的Django變量:/我嘗試了很多東西,但是我得到了'none'或什麼也沒有 – Deadpool

+0

爲什麼不寫'theme =「{{theme}}」。 – albar

回答

0

要在Django中提取的主題選擇,你會做類似這樣的一個Ajax請求:

$(function() { 
    $('form').submit(function (event) { 
     event.preventDefault(); 
     $.ajax({ 
      url: "/choicetheme", 
      data: $('form').serialize(), 
      type: 'post', 
      success: function (data) { 
       alert(data.theme); 
      } 
     }); 
    }); 
})(jQuery) 

然而你也可以在將它發送到javascript中的django之前提取選擇,但是然後你需要知道哪些元素在IE中是選擇你的主題的選項元素。