我有一个名为“ counter”的javascript变量,我想用它来更新在models.py中实例化的计数器变量。
这是models.py的快照
class Player(BasePlayer):
#track the number of times the user has lost window focus
blur_quantity = models.IntegerField(initial=0)
这是pages.html的示例
{% block content %}
<button name="blur_button" value=counter onclick="Warn()" class="btn btn-primary btn-large">Blur Button</button>
{% endblock %}
{% block scripts %}
<script>
var counter = 0;
// Tracks window blurs
$( document ).ready(function() {
function onchange (evt) {
counter++;
console.log(counter);
}
window.onblur = onchange;
});
function Warn() {
alert(counter);
}
</script>
{% endblock %}
现在,每当用户单击按钮时,“ counter”的值应存储在某个位置。如何更新models.py(例如Django数据库)中的blur_quantity的值,以反映附加到blur_button的值?
JavaScript:
var counter = 0;
$( document ).ready(function() {
function onchange (evt) {
counter++;
$.ajax({
url: '/update_counter/',
data: {'counter': counter},
type: 'POST'
}).done(function(response){
console.log(response);
});
}
window.onblur = onchange;
});
views.py:
from django.http import HttpResponse
from models import Player
def update_counter(request):
if request.method == 'POST':
player = Player.objects.get()
player.blur_quantity = request.POST['counter']
player.save()
message = 'update successful'
return HttpResponse(message)
urls.py:
from django.conf.urls import url
from views import update_counter
urlpatterns = [
url(r'^update_counter/', update_counter)
]
基本上,ajax
JavaScript中的in调用counter
通过POST
请求发送到服务器。urls.py
将请求路由到您的update_counter
方法,该方法将使用的值更新数据库counter
。最后,该update_counter
方法返回响应,该响应由done
JavaScript中的函数处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句