gpt4 book ai didi

javascript - 将 Javascript 数据传递给 Django

转载 作者:行者123 更新时间:2023-11-28 02:01:53 24 4
gpt4 key购买 nike

我是 Django(和 Web 开发)的新手,发现自己正在为这个问题苦苦挣扎:我使用 javascript 构建了一个简单的计时器,现在想要在模型中有一个变量,该变量在计时器启动时更新。我迷失了如何做到这一点。

这是我的代码:

home.html:

<button onclick='activatecount()' value='countdown'>Start Timer</button>
<p id='countdown'></p>
<p id='endofcount'></p>

<script src='{{ STATIC_URL }}timerapp.js'></script>
</body>
</html>

然后是 javascript。屏幕上有一个按钮,当用户单击该按钮时,计时器开始倒计时。

var myTime = setInterval(displayTime, 1000);//Calls the function displayTime once every second
function subtractSeconds(){
seconds--;
document.getElementById('countdown').innerHTML = seconds; }

var interval;
var minutes = 2;
var seconds = 10;

function activatecount(){
countdown('countdown');
}

function countdown(element) {
interval = setInterval(function() {
var el = document.getElementById(element);
if(seconds == 0) {
if(minutes == 0) {
el.innerHTML = "countdown's over!";
clearInterval(interval);
return;
} else {
minutes--;
seconds = 60;
}
}
if(minutes > 0) {
var minute_text = minutes + (minutes > 1 ? ' minutes' : ' minute');
} else {
var minute_text = '';
}
var second_text = seconds > 1 ? 'seconds' : 'second';
el.innerHTML = minute_text + ' ' + seconds + ' ' + second_text + ' remaining';
seconds--;
}, 1000);
}

我的views.py:

def home(request):
return render_to_response('home.html', context_instance=RequestContext(request))

最后是我的 models.py:

class User(models.Model):
username = models.CharField(max_length=10)
email = models.EmailField(max_length=254)
first_name = models.CharField(max_length = 20)
last_name = models.CharField(max_length = 20)
join_date = models.DateField().auto_now_add
block_count = models.IntegerField()

def __unicode__(self):
return self.username

我想要的只是当计时器启动时 block_count 增加 1。 (我稍后会添加更多功能,但我完全迷失在这个看似微不足道的事情中。)我能找到的只是关于如何使用表单和 POST 将数据提交到数据库的讨论,但我在这里没有使用表单.

这里应该使用 POST 吗?如果是,怎么办?

最佳答案

创建第二个 View 来更新模型。如果您希望在数据库更新时能够保持在同一页面上,请使用 jquery 的 .ajax 方法调用第二个 View 。

类似于:

View .py

def ajax(request):
if request.is_ajax():
// add 1 to your block count

j查询:

function countdown(element) {
interval = setInterval(function() {
var el = document.getElementById(element);
if(seconds == 0) {
if(minutes == 0) {
el.innerHTML = "countdown's over!";
$.ajax({
type:"POST",
url :"/ajax-url/",
error:function(data){alert('Error');}
success:function(data{alert('OK!');}
});
clearInterval(interval);
return;
// etc etc

网址:

url(r'^ajax-url/$', 'views.ajax'),

这是一般的想法。我没有测试过这段代码,但它应该为您提供一个起点,让您了解如何解决您的问题。

关于javascript - 将 Javascript 数据传递给 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13560975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com