【问题标题】:How to POST and capture a jQuery ui-slider outputted value in a Django view?如何在 Django 视图中发布和捕获 jQuery ui-slider 输出值?
【发布时间】:2014-12-04 10:17:26
【问题描述】:

我正在尝试将显示在调查表单内部页面上的jQuery UI slider 的值发布到 Django SessionWizardView。我对 JavaScript 和 jQuery 很陌生,但对 Python 2.7.3 / Django 1.6.2 有一些经验。

问题:如何在 Django 视图中“发送”和“捕获”从 jQuery ui-slider 通过 POST 发送的数据?

其他问题/信息

wizard_form.html

我有一个从a tutorial by Thoriq Firdaus 采用的 jQuery-UI 滑块。这出现在我的 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],            
        })  

所以本质上,我不确定下一步该做什么/尝试。任何人都可以提供任何提示或提示吗?

【问题讨论】:

    标签: javascript django python-2.7 jquery-ui-slider django-csrf


    【解决方案1】:

    由于要在 SessionWizardView 中选择数据,我建议在表单中设置一个隐藏字段 slider_value。现在在前端这个字段是不可见的。

    滑块功能将更新此隐藏字段中的值,可以通过发布表单来发布。然后可以从会话向导视图中的表单对象访问该值。

    【讨论】:

      猜你喜欢
      • 2014-03-31
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2019-07-09
      • 2018-03-23
      • 1970-01-01
      相关资源
      最近更新 更多