Как передать переменную из javascript в python (oTree) или django?
Я создал несколько переменных в Javascript для отслеживания того, как долго человек удерживает кнопку. Я хотел бы передать эти переменные в класс в python (oTree) для хранения данных.
Итак, предположим, что код Javascript выглядит следующим образом:
let javascriptvariable = 0;
Эта javascript-переменная будет обновляться по мере нажатия пользователем на кнопку, поэтому, допустим, конечное значение javascript-переменной = 100. Код на языке python приведен ниже.
class DisplayCharacteristics2(Page):
form_model = 'player'
pythonvariable = javascriptvariable
@staticmethod
def vars_for_template(player: Player):
return {
"var1": player.var1,
}
Я попытался создать пустую переменную, но получаю ошибку, которая говорит что-то вроде javascript не может "добавить" к переменной null. Я также попробовал использовать django в сочетании с javascript (см. ниже), но javascript не может добавить к переменной null. Сначала я попытался приравнять ее к нулю, но тогда я получаю только точки данных 0.
let javascriptvariable = `{{ pythonvariable|safe }}`
Любая информация будет оценена по достоинству! Заранее спасибо.
Передача переменной в django может происходить несколькими способами в зависимости от того, чего вы пытаетесь достичь. Данные могут быть POST в базе данных, они могут быть переданы в сессии, cookies, localstorage и так далее. Один из способов достичь того, что вы пытаетесь сделать, это получить данные в модели с помощью Javascript и использовать команду get в вашем views.py для сохранения их в переменной.
Использование живых страниц, похоже, решает проблему.
https://otree.readthedocs.io/en/latest/live.html
Так что в Javascript:
function sendTracker1() {
liveSend({'which_char': 'char_1', 'value': tracker1})
}
А в Python:
class MyPage(Page):
form_model = 'player'
@staticmethod
def live_method(player, data):
if data['which_char'] == 'char_1':
player.timer_char1 = int(data['value'])