我正在使用Python和Flask创建数据输入/计时网络应用程序。当用户进入日志页面时,他们输入"会话ID"对于他们的任务,表单提交和用户ID的时间也自动输入到数据库。
现在我正在尝试使用Javascript记录何时为任务加载页面,这样我就有了开始时间和结束时间。我首先尝试通过AJAX将javascript变量发布到后端,但我似乎无法让它工作。现在我试图将javascript变量作为" HiddenField"的一部分与会话ID一起发送。我还没有配置页面加载时间脚本,我只是想让Javascript与WTForms交谈以与我的数据库提交进行通信。这是我目前的代码:
views.py
@app.route('/logpage', methods=['GET', 'POST'])
@login_required
def logpage():
form = LogForm()
if form.validate_on_submit():
timer = request.get_data("timer")
entry = LogData(sessionid=form.sessionid.data, user_id=current_user.get_id(), starttime=form.testvar.data, endtime=datetime.utcnow())
db.session.add(entry)
db.session.commit()
return redirect(url_for('home'))
return render_template('logpage.html', form=form)
models.py
class LogForm(FlaskForm):
sessionid = StringField('sessionid', validators=[InputRequired(), Length(min=16, max=16)])
testvar = HiddenField('testvar')
logpage.html
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}Active Log Page{% endblock %}
{% block head %}
<!-- Custom styles for this template -->
<link href="static/css/starter-template.css" rel="stylesheet">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="{{ url_for('static', filename='jquery.js') }}">\x3C/script>')</script>
<script src="static/js/timer.js?version=25"></script>
{% endblock %}
{% block body %}
<div class="container">
<div class="form-group">
<form class="form-logpage", method="POST" action="/logpage", id="jsinput">
{{ form.hidden_tag() }}
{{ wtf.form_field(form.sessionid) }}
<div id="jsinput">
{{ wtf.form_field(form.testvar) }}
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit">Finish Job</button>
</form>
</div>
</div>
{% endblock %}
timer.js
var myData = "dataVariable";
document.getElementById("jsinput").value = "myData";
正如您所看到的,我尝试使用document.getElementById将变量放在logpage.html中,但是当我点击提交时,starttime字段为空。我已经查看了文档中有关将变量放入WTForm的方法,但我找不到任何相关内容。
之前,在其他一些问题中,它显示为null和/ x和&#39; b但是我从那以后做了很多修修补补,数据库条目只是&#39;&#39 ;.
如果有一种更优雅的方式来记录页面加载日期时间并使用其余数据同时记录到数据库,我很乐意听到建议。以前的SO帖子:Python/Flask: How to tell how long a user spends on a page? (Data entry/time log app)