2014-10-09 36 views
0

我想將調查表格內部頁面上出現的jQuery UI slider的值發佈到Django SessionWizardView。我對JavaScript和jQuery相當陌生,但對Python 2.7.3/Django 1.6.2有一些經驗。如何在Django視圖中POST和捕獲jQuery ui-slider輸出值?

問題:如何通過POST在Django視圖中發送和捕獲從jQuery ui-slider發送的數據?

aditional的問題/信息

wizard_form.html

我有一個jQuery UI的滑塊從a tutorial by Thoriq Firdaus採用。這出現在我的SessionWizardView內部頁面上。

<form action="" method="post">{% csrf_token %} 
      <table> 
       {{ wizard.management_form }} 
        {% if wizard.form.forms %} 
         {{ wizard.form.management_form }} 
         {% for form in wizard.form.forms %} 
          {{ form }} 
         {% endfor %} 
        {% else %} 
         {{ wizard.form }} 
       {% endif %} 
      </table> 

     {% load staticfiles %} 
      {% if 'surveyone' in request.path %}       
        {% if wizard.steps.current in steps %}  
          <img src="{% static "survey/images/pathone/" %}{{display_image}}" height="600" width="500" style="border:1px solid black;" align="middle"/>                  

          <section>        
           <span class="tooltip"></span> 
           <div id="slider"></div> 
           <span class="volume"></span> 
          </section> 

/my_project/src/survey/static/survey/js/slider.js

這是我slider.js代碼中的相關部分。我正在嘗試使用jQuery.postvalue發佈到我的Django視圖。

slide: function (event, ui) { 
    var value = slider.slider('value'), 
     volume = $('.volume');     
     console.log(value)     
     $.post("/surveyone/", {value : value, csrfmiddlewaretoken : '{{csrf_token}}' }); 
     }, 

/my_project/src/survey/views.py

這是我SessionWizardView包含get_context_datadone方法,兩種方法的正常工作。我的問題是我不確定如何'接收'發佈的數據。

我已經通過窗體嚮導文檔閱讀,但沒有站出來,最接近的就是render(self, form=None, **kwargs):方法,但認爲它應該被使用的「GET後或POST請求已處理」

class SurveyWizardOne(SessionWizardView):      

    def get_context_data(self, form, **kwargs): 
     context = super(SurveyWizardOne, self).get_context_data(form, **kwargs) 
     if self.steps.current in ['5','6','7','8','9','10','11','12','13','14','15','16']:    
      step = int(self.steps.current) 

      if step in (5, 6, 7): 
       image = random.choice(PATH_ONE_IMAGES) 
       images.insert(step - 5, image)   
       PATH_ONE_IMAGES.remove(image) 
       context['display_image'] = image 

      elif step == 8: 
       context['first_image'] = images[0] 
       context['second_image'] = images[1] 
       context['third_image'] = images[2]    

      elif step in (9, 10, 11): 
       image = random.choice(PATH_ONE_IMAGES) 
       images.insert(step - 6, image)  
       PATH_ONE_IMAGES.remove(image) 
       context['display_image'] = image 

      elif step == 12: 
       context['fourth_image'] = images[3] 
       context['fifth_image'] = images[4] 
       context['sixth_image'] = images[5] 


      steps = ['5','6','7','9','10','11']    
      dv_steps = ['8','12']   

      context.update({'steps': steps, 
          'dv_steps': dv_steps 
          }) 


    def done(self, form_list, **kwargs): 
     return render(self.request, 'Return_to_AMT.html', { 
      'form_data': [form.cleaned_data for form in form_list],    
     }) 

所以實質上,我不確定接下來要做什麼/嘗試。任何人都可以提供任何提示或提示嗎?

回答

1

由於要在SessionWizardView中選取數據,我建議在窗體中使用隱藏字段slider_value。現在在前端,這個字段是不可見的。

滑塊功能將更新此隱藏字段中的值,通過發佈表單可以發佈該值。然後可以從會話wizrd視圖中的表單對象訪問該值。

+0

這js小提琴可以幫助您與前端js代碼。 http://jsfiddle.net/bU6EV/12/ – 2014-10-13 20:17:42