我希望将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);
}
});
一如既往,谢谢!
答案 0 :(得分:1)
首先,在您的click
监听器中,您试图使用滑块_值来引用错误的ID,它应该是$("#hidden1")
;
其次,在您的post
Ajax调用中,您将slider_value
的值作为参数名称hidden
发送,并且在您的视图中,您尝试按名称“slider_value”获取,它应该是“隐藏的”。或者您可以在Ajax调用中将其更改为“slider _value”。
答案 1 :(得分: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