これまでのところ、dajax を使用してこのビューを実装することに成功しましたが、非常に面倒で、これまで読んできたように、ビューを view.py ファイルに含めることをお勧めします。このガイドを使用して実装しようとしました: http://www.micahcarrick.com/ajax-form-submission-django.htmlが、クリックされたボタンを読み取ることができませんでした。
ページには、接続されている機器のプロットやその他のステータスも含まれているため、送信後も同じビューが表示されます (リダイレクトなし)。
models.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>
そして、ボタンスタートまたはボタンストップに入ることのないビューファイル。もう 1 つの質問は、データを 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の両方に非常に慣れていません。ですから、何か違うことをしなければならない場合と、私の問題を解決する方法を教えてください。