Отри сохранить страницу статических результатов

Я использую OTree для запуска ряда различных приложений / игр / экспериментов за сеанс. В настоящее время результаты каждого приложения отображаются в приложении как последняя страница. Но я хочу не показывать результаты до тех пор, пока все приложения не будут запущены, в приложении с конечными результатами.

Вместо того, чтобы создавать кучу новых переменных участников для хранения всех результатов и писать новый код для их отображения, я надеялся, что в каждом приложении есть какой-то способ, которым я могу сохранить results_page.html как статическую HTML-страницу (со всеми переменными, отображаемыми с их текущими значениями, а не {{variable}}), которые я мог загрузить позже вне приложения в конце в приложении с конечными результатами.

За последние несколько месяцев я довольно много узнал о кодировании в Otree и могу понять основы Python, но Django все еще сбивает меня с толку (я старая школа).

Я нашел код для чтения на html-странице и сохранил его как строку, но, похоже, не смог дать значение переменных просто {{variable}}. Я думаю, что я видел что-то про Django модуль Пекарня?

Я надеялся, что это может быть что-то легко (кто не делает).

Может кто-то указать мне верное направление?

Blackers

1 ответ

Чтобы быть искренним, я считаю этот статический подход для извлечения данных игроков из других приложений очень неэффективным.

Что я хотел бы предложить, если вы не хотите писать кучу participant.vars это получить данные напрямую.

Если в вашем наборе есть набор приложений app_sequence Вы можете получить эти данные в любой момент, используя объект участника и менеджер связанных объектов.

Допустим, у вас есть приложения ['app1', 'app2', 'app3', 'conclusion'],

Тогда для любого участника, когда вы находитесь в conclusion Вы можете получить всех игроков, скажем, app2, от:

app2players = self.participant.app2_player.all()

тогда вы можете суммировать любые поля этого набора игроков, или что-то еще. Например, этот покажет вам суммарные выплаты в приложении в следующей последовательности:

def creating_session(self):
    appseqs = [i.lower() for i in self.session.config['app_sequence']]
    for p in self.session.get_participants():
        for i in appseqs:
            player_app_name = '{}_player'.format(i)
            payoff = sum([j.payoff for j in  getattr(p,player_app_name ).all()])
            print('Payoff in app {} for the participant {}:: {}'.format(i, p.code, payoff))

вывод будет:

Payoff in app trial_ch_uh for the participant ujngvqql:: 0 points
Payoff in app treatment_ch_uh for the participant ujngvqql:: 0 points
Payoff in app treatment_repeated_ch_uh for the participant ujngvqql:: 0 points

Это глупый пример, потому что я вычисляю это в creating_session когда еще нет выигрыша, но это только для иллюстрации идеи

Другие вопросы по тегам