gpt4 book ai didi

Python/Flask : How to tell how long a user spends on a page?(数据输入/时间日志应用程序)

转载 作者:行者123 更新时间:2023-11-28 18:19:16 25 4
gpt4 key购买 nike

我看到了关于用户使用 Javascript 在页面上花费多长时间的答案,但我缺乏 JS 知识(更不用说将 JS 集成到我的 Python/Flask 框架中了)。

我的目标是创建一个网络应用程序,用户可以在其中输入数据,同时记录执行任务所花费的时间(包括持续时间和一天中的时间)。

我使用 Python、Flask、WTForms 和 SQLAlchemy 来实现大部分功能。从我的 views.py 文件中,我配置了这个:

@app.route('/logpage', methods=['GET', 'POST'])
@login_required
def logpage():
form = LogForm()

if form.validate_on_submit():
entry = LogData(sessionid=form.sessionid.data, user_id=current_user.get_id(), endtime=datetime.utcnow())
db.session.add(entry)
db.session.commit()

return redirect(url_for('home'))

return render_template('logpage.html', form=form)

当用户点击提交时, session ID、用户 ID 和结束时间将记录到 PostgreSQL 服务器中。我尝试在表单验证之前设置 pageload = datetime.utcnow() 希望它能存储页面加载的时间,但它似乎保存了与结束时间相同的时间。

我试图找出一种方法将当前日期时间写入 SQL 条目/行并在表单验证时输入同一行,但我不知道如何将同一行写入两次。也许有主键并将它们链接起来?我将继续调查此事。

我想要一种方法来保存此页面加载的日期时间,以便可以将其与提交表单的时间进行比较。有没有不用 javascript 的直接方法来完成此操作?

最佳答案

您可以使用 Flask session 来跟踪开始时间。它是在浏览器 cookie 之上实现的。

http://flask.pocoo.org/docs/0.12/quickstart/#sessions

您需要为应用程序实现一个 key (如快速入门示例所示),然后您可以使用 session 对象作为用户特定信息的键值存储。

对于您的特定用例,它可能类似于:

@app.route('/logpage', methods=['GET', 'POST'])
@login_required
def logpage():
form = LogForm()

if form.validate_on_submit():
entry = LogData(sessionid=form.sessionid.data, user_id=current_user.get_id(),
starttime=session.pop('start_time', None), endtime=datetime.utcnow())
db.session.add(entry)
db.session.commit()

return redirect(url_for('home'))

session['start_time'] = datetime.utcnow()

return render_template('logpage.html', form=form)

pageload = datetime.utcnow() 在表单验证无效之前因为:

  • 这个变量在函数范围内是局部的,在函数完成后不会持续存在
  • 即使变量不在函数调用的范围内,GET 和 POST 也会调用同一个函数,因此当用户提交表单时它会被覆盖

还有一件事需要注意,您不能相信用户会使用 cookie 或允许 JavaScript,因此您应该考虑您的程序将如何处理数据库中的空开始时间。

关于Python/Flask : How to tell how long a user spends on a page?(数据输入/时间日志应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46312349/

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