Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django支持的站点和SQLite以一定速率递增整数的最佳方法是什么?_Python_Django_Sqlite - Fatal编程技术网

Python 使用Django支持的站点和SQLite以一定速率递增整数的最佳方法是什么?

Python 使用Django支持的站点和SQLite以一定速率递增整数的最佳方法是什么?,python,django,sqlite,Python,Django,Sqlite,我试图显示一个从一个非常非常简单的Django数据库调用的数字,它将随着时间的推移而递增。它将使用jinja2模板调用,数字是一个简单的IntegerField() 但是,我希望该数字能够自动递增,在不刷新页面的情况下,在一天中重复多次。此外,我希望每次刷新数字时,都能将新值添加到记录时间和日期的同一数据库中。 实现这一目标的最佳语言/框架组合或组合是什么? 我开始认为仅Django和Jinja2还不足以达到这种效果。在不了解全部背景的情况下,我可以看到两种可能的解决方案 1) 在Django视

我试图显示一个从一个非常非常简单的Django数据库调用的数字,它将随着时间的推移而递增。它将使用jinja2模板调用,数字是一个简单的IntegerField()

但是,我希望该数字能够自动递增,在不刷新页面的情况下,在一天中重复多次。此外,我希望每次刷新数字时,都能将新值添加到记录时间和日期的同一数据库中。 实现这一目标的最佳语言/框架组合或组合是什么?


我开始认为仅Django和Jinja2还不足以达到这种效果。

在不了解全部背景的情况下,我可以看到两种可能的解决方案

1) 在Django视图中,加载模型并计算自其开始日期时间起的时间,运行函数计算当前的自动递增数字,并将其添加到视图的上下文中以供显示。然后在浏览器中加载视图后,使用JavaScript自动更新数字。(不是一个非常精确的方法)

2) 您可以创建一个,然后按设定的间隔使用。这将允许您在数据库中存储更改的编号。然后,您可以使用AJAX(类似jQuery的东西可能很容易实现)从Django视图中提取该值,该视图从数据库中提供当前数字。确保AJAX脚本以设定的时间间隔运行

也许这有助于:

下面是他们文档中的一小段代码,每小时运行一次或配置为crontab:

from apscheduler.schedulers.blocking import BlockingScheduler

def some_job():
    print "Decorated job"

scheduler = BlockingScheduler()
scheduler.add_job(some_job, 'interval', hours=1)
scheduler.start()
在不了解更多代码的情况下,很难说增量,但我可以建议

number += 1

您可能有这样一个模型来在数据库中存储整数计数器:

class Counter(models.Model):
    counter_value = models.IntegerField()
然后,您可以创建此模型的一个实例,并使用Django shell为其提供一个初始值
0
:通过运行
python manage.py shell
来输入shell,然后在导入
计数器
模型后运行以下操作:

Counter.objects.create(counter_value=0)
def increment(request):
    counter = Counter.objects.get(pk=1)
    counter.counter_value += 1
    counter.save()
然后创建一个增加计数器的视图(导入
计数器
模型后):

然后为该视图创建一个
url
(导入相应的
视图后)

现在,您可以在服务器上运行一个简单的Python脚本来请求上面的url,并使计数器每一小时递增一次,例如。脚本可能如下所示:

import time
import requests

while True:
    request.get('http://your-website-url/increment-counter')
    time.sleep(60*60) # 1 hour
这需要安装请求包

之后,您可以在服务器上运行此脚本(
python3/path/to/script
),以实现您想要的功能

我保持简单。但是,您可以增加复杂性以满足您的需求。您还可以在系统启动时运行Python脚本,并且可以向其添加更多功能


注意:我还没有测试上面的代码,但我认为它很简单,可以正常工作。

是什么控制了这个数字?您需要每小时增加一个值,还是基于访问量?请提供更多有关自动递增编号的意义的上下文。@Nostalg.io它基于一个静态函数。所以它是一个常数加法函数,可以随时间增加一个简单的值。也许是“+1每x小时”。看起来第二个选项更可行,但是的,这与我所寻找的东西相似;我只需要大致的指导,谢谢!谢谢你的意见。最重要的是没有测试它的免责声明;不过,我会尝试一下,看看它是如何工作的!
import time
import requests

while True:
    request.get('http://your-website-url/increment-counter')
    time.sleep(60*60) # 1 hour