到目前为止,我已经成功地使用 dajax 实现了这个视图,但我发现它非常混乱,而且我一直在阅读到目前为止,在 view.py 文件中拥有你的视图是一个很好的做法。我已经尝试使用本指南实现它:http: //www.micahcarrick.com/ajax-form-submission-django.html但无法读取单击了哪个按钮。
提交后(无重定向)仍应显示相同的视图,因为该页面还包含我连接的仪器的绘图和其他状态。
模型.py
class ActiveMeas(models.Model):
channels = models.CharField(max_length=100)
technology = models.ForeignKey(TechnologyModel)
samples = models.IntegerField()
delay = models.IntegerField()
table = models.IntegerField()
stir = models.IntegerField()
表格.py
class ActiveForm(ModelForm):
class Meta:
model=ActiveMeas
.html 文件
<form action="" method="post" id="activeform">
<div id="ajaxwrapper">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.as_p }}
<p id="sendwrapper"><input type="submit" value="Start" id="idstartbut" name="_ButtonStart"/></p>
<p id="sendwrapper"><input type="submit" value="Stop" id="idstopbut" name="_ButtonStop"/></p>
</div>
</form>
以及我从未进入buttonstart或buttonstop的视图文件。另一个问题是如何将数据返回到 javascript 并从那里更新?
视图.py
def active(request):
if request.POST:
form = ActiveForm(request.POST)
if '_ButtonStart' in request.POST:
print "START"
if form.is_valid():
response_data = {'data':request.POST}
return HttpResponse(simplejson.dumps(response_data))
else:
print "NOT VALID"
response_data = {'data':request.POST}
return HttpResponse(simplejson.dumps(response_data))
elif '_ButtonStop' in request.POST:
print "STOP"
else:
form = ActiveForm()
return render(request, 'active.html', {'index': "active",'form':form})
javascript
function ActiveInit(){
$(document).ready(function () {
$(function() {
var form = $("#activeform");
form.submit(function(e) {
$("#ajaxwrapper").load(
form.attr('action') + ' #ajaxwrapper',
form.serializeArray(),
);
e.preventDefault();
});
});
}
我对 django、ajax 和 jQuery 都很陌生。因此,如果要做一些不同的事情,以及如何解决我的问题,请赐教。