Я не уверен, правильно ли я понимаю код, но вы спрашиваете, как обновить количество точек с activity1.html
в последнем фрагменте кода? Это не сработает, HTML отображается на сервере и после того, как он был представлен в браузере, между ними нет никакой связи.
Если вам нужно передать некоторые данные в шаблон во время рендеринга, вы должны передать их в вызове render_template
, например,
render_template('activity1.html', title='Activity 1', user=user)
Затем вы можете получить к нему доступ в шаблоне так:
<script>
function getPoints(){
points = {{ user.points|int }} + 20;
// post to backend to update data in database (using jQuery)
$.ajax({
type: 'POST',
contentType: 'application/json',
data: {
id: "{{ user.id }}",
points: points
},
dataType: 'json',
url: 'http://xxx/update_points',
success: function (e) {
// successful call
},
error: function(error) {
// an error occured
}
});
}
</script>
Если вы хотите обновить пользовательские точки в базе данных, вам нужно будет отправить запрос на сервер, который позаботится об этом. На стороне сервера во Flask определите представление для обработки этого запроса:
@bp.route('/update_points', methods=['POST'])
def update_points():
data = request.get_json()
# don't know exactly what's the model and how to get the 'user' instance
user = User.get_user_by_id(data['id'])
user.points = data['points']
db.session.add(user)
db.session.commit()
Возьмите его в качестве примера кода, я не тестировал его и пропустил довольно много деталей (например, как получить экземпляр user
в update_points
и т. Д.) Кроме того, я мог пропустить то, что вы действительно спрашиваете для.