【发布时间】:2020-04-08 21:07:49
【问题描述】:
我是 Flask 和高级 Web 开发的新手,所以请放轻松。这是我第一次使用 Flask,我仍然在掌握它。我不确定我是否在问正确的问题,所以我将解释我的意思。
通过教程,我了解了如何通过使用 HTML <form> 元素来传递数据和信息,例如注册/登录用户以及将页面切换回索引。
就我而言,我正在创建一个求解计时器网站,用于快速求解魔方。我已经用纯 HTML/CSS/JavaScript 完成了这个网站,这当然只保存了当前会话,而不会将时间保存到数据库中。现在我想将其转换为 Flask 网站。
我想知道,很抱歉,如果这真的很广泛,是如何让我的 JavaScript 函数处理求解的结束,最初只是将它保存到本地数组,现在将它保存到 SQL 数据库.在稍后在我的 Web 服务器上切换到 PostgreSQL 或 MySQL 之前,我在开发中使用 SQLite。
如果您愿意,我会详细说明。提前致谢。
编辑 到目前为止,这是我尝试过的,来自不同教程的信息:
(我删除了所有不相关的内容)
JavaScript
//...
var xhr = new XMLHttpRequest();
xhr.open("POST", '/bgprc', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({ time: time }));
//...
time 是在求解完成定时后生成的变量,也是我要发送到数据库的变量。
models.py
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
#...
times = db.relationship('SolveTimes', backref='user', lazy='dynamic')
#...
def load_times(self):
times = SolveTimes.query.all()
return times
class SolveTimes(db.Model):
id = db.Column(db.Integer, primary_key=True)
times = db.Column(db.Float, index=True, unique=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
routes.py
@app.route('/')
@app.route('/index')
@login_required
def index():
times = current_user.load_times()
return render_template('index.html', times=times)
#...
@app.route('/bgprc')
def background_process():
try:
time = request.args.get('time', 0, type=str)
t = SolveTimes(time, user=current_user)
db.session.add(t)
db.session.commit()
except Exception as e:
return str(e)
最后在 index.html 中,我尝试根据 routes.py
中传递的内容将时间加载到表格中index.html
...
<ul id="solveTimes">
{% for time in times %}
<li>{{ time }}</li>
{% endfor %}
</ul>
...
【问题讨论】: