我有一个名为“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)
Run Code Online (Sandbox Code Playgroud)
这是 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 %}
Run Code Online (Sandbox Code Playgroud)
现在,每当用户单击按钮时,“计数器”的值都应该存储在某处。如何更新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;
});
Run Code Online (Sandbox Code Playgroud)
视图.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)
Run Code Online (Sandbox Code Playgroud)
网址.py:
from django.conf.urls import url
from views import update_counter
urlpatterns = [
url(r'^update_counter/', update_counter)
]
Run Code Online (Sandbox Code Playgroud)
基本上,ajaxJavaScript 中的in 调用counter通过POST请求发送到服务器。urls.py将请求路由到您的update_counter方法,该方法使用值更新数据库counter。最后,该update_counter方法返回一个响应,该响应由doneJavaScript 中的函数处理。
| 归档时间: |
|
| 查看次数: |
4594 次 |
| 最近记录: |