【问题标题】:How to get the value of a HTML form text field into a Django view?如何将 HTML 表单文本字段的值获取到 Django 视图中?
【发布时间】:2014-10-20 15:49:51
【问题描述】:

我想将 html 文本字段 name="slider_value" 的值返回到 Django 类 SessionWizardView,特别是 get_context_data 方法。通过阅读this site 和其他人,我知道我需要使用self.request

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 表单,我正在尝试获取文本字段名称“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);
    }
});

一如既往,谢谢!

【问题讨论】:

    标签: javascript python html django jquery-ui


    【解决方案1】:

    首先,在您的click 侦听器中,您尝试获取slider_value 您引用了错误的ID,它应该是$("#hidden1")

    其次,在您的post Ajax 调用中,您将slider_value 的值作为参数名称hidden 发送,在您看来,您试图通过名称“slider_value”获取它,它应该是“隐藏的” .或者,您可以在 Ajax 调用中将其更改为“slider _value”。

    【讨论】:

      【解决方案2】:

      要获取请求所需的值,可以使用 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
      

      【讨论】:

      猜你喜欢
      • 2019-07-19
      • 1970-01-01
      • 2012-05-29
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-02
      • 1970-01-01
      相关资源
      最近更新 更多