2014-10-20 39 views
2

我想要將html文本字段name="slider_value"的值重新帶回到Django類SessionWizardView中,具體到get_context_data方法中。從閱讀this site和其他人我知道我需要使用self.request如何獲取HTML表單文本字段的值到Django視圖中?

this answer我發現slider_value = self.request.POST['slider_value']但它只返回一個「無」值。我猜這是因爲當時的文本字段沒有任何價值。

我的問題是,我只想要slider_value當用戶點擊提交表單頁面時存儲的值。

任何人都可以告訴我在用戶點擊提交按鈕後,如何將html文本字段name="slider_value"的值放入我的get_context_data方法中?

下面是我到目前爲止的代碼

views.py

這是我get_context_data方法的縮短版

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 

      if step == 5:  
       print 'you are on step 5'   
       slider_value = self.request.POST['slider_value']    
       print 'This is the slide value', slider_value 

      .... 
      .... 

    return context 

HTML

這是我的html表單,我正在嘗試獲取tex的值t字段名稱'slider_value'。它相當於一個jQuery滑塊(值-100 - +100)

<form action="" method="post">{% csrf_token %} 
    <img src="{% static "survey/images/pathone/" %}{{display_image}}"/>  

    <div class="slider" id="one"></div>        
    <div id="slider-result"></div> 
    <input type="text" name="slider_value" id="hidden1"/>       
    <script src="{% static "survey/js/slider_two.js" %}"></script> 

    <input type="submit" value="{% trans "submit" %}"/> 
</form> 

slider_two.js

這是我的jQuery的滑塊。它更新了上面的文本字段,slider_value

$('#submit').click(function() { 
    var username = $('#hidden').val(); 
    if (username == "") username = 0; 
    $.post('comment.php', { 
     hidden: username 
    }, function(return_data) { 
     alert(return_data); 
    }); 
}); 

$(".slider").slider({ 
    animate: true, 
    range: "min", 
    value: 0, 
    min: -100, 
    max: +100, 
    step: 1, 

    slide: function(event, ui) { 
     $("#slider-result").html(ui.value); 
     if($(this).attr("id") == "one") 
      $("#hidden1").val(ui.value); 
    } 
}); 

一如既往,謝謝!

回答

0

要獲得需要請求的值,可以使用self.request。只需初始化表單並從那裏獲取。

作爲參考,您可以在文檔中使用此example

def get_context_data(self, **kwargs): 
    # Call the base implementation first to get a context 
    context = super(PublisherDetail, self).get_context_data(**kwargs) 
    # Add in a QuerySet of all the books 
    context['book_list'] = Book.objects.all() 
    form = myForm(request.POST or None) 
    return context 
+0

根據這個回答http://stackoverflow.com/a/16243717/1214163和它引用它的文檔應該可以在get_context_data中使用請求通過使用'self.request' – Deepend 2014-10-21 16:06:01

+0

從文檔:https:// docs.djangoproject.com/en/dev/topics/class-based-views/generic-display/#dynamic-filtering使這項工作的關鍵部分是,當調用基於類的視圖時,各種有用的東西都存儲在自己;以及請求(self.request),這包括位置(self.args)和基於名稱(self。kwargs)根據URLconf捕獲的參數。 – Deepend 2014-10-21 16:07:25

+0

是的,那是我的不好,我會編輯我的答案 – cdvv7788 2014-10-21 16:08:51

1

首先,在你click監聽器,在您試圖GE slider_value你引用了錯誤的ID,它應該是$("#hidden1");

其次,在你的post Ajax調用,你送slider_value的值作爲參數名hidden,在你看來,你試圖通過名字來得到它‘slider_value’,應該‘隱藏’。或者,您可以在Ajax調用中將其更改爲'slider _value'。

相關問題