首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Otree保存静态结果页

Otree保存静态结果页
EN

Stack Overflow用户
提问于 2018-05-22 15:42:57
回答 1查看 455关注 0票数 0

我正在使用OTree在一个会话中运行许多不同的应用程序/游戏/实验。目前,每个应用程序的结果都作为最后一页显示在应用程序中。但我希望在所有应用程序运行后,在最终结果应用程序中显示任何结果。

而不是创建一个新的参与者变量堆来存储所有结果并编写新的代码来显示它们,我希望在每个应用程序中,我可以将变量保存为静态html页面(所有变量都以当前值显示,而不是{{ results_page.html }}),以便稍后在最终结果应用程序中加载到应用程序之外。

在过去的几个月里,我在Otree中学到了不少关于编码的知识,可以理解基本的Python,但Django仍然让我感到困惑(我是个老派)。

我已经找到了读取html页面并将其保存为字符串的代码,但似乎无法仅给出变量的值{{variable}}。我想我看到了一些关于Django模块面包房的东西?

我希望这可能是简单的东西(谁不是)。

有谁能给我指个方向吗?

黑人党

EN

回答 1

Stack Overflow用户

发布于 2018-05-23 07:00:32

坦率地说,我发现这种从其他应用程序中检索玩家数据的静态方法效率非常低。

如果你不想写一大堆participant.vars,我建议你直接获取数据。

如果您的app_sequence中有一组应用程序,您可以使用participant对象和相关对象管理器随时获取此数据。

假设你有['app1', 'app2', 'app3', 'conclusion']应用程序。

然后,对于任何参与者,当您在conclusion中时,您可以通过以下方式从app2获取所有玩家:

代码语言:javascript
复制
app2players = self.participant.app2_player.all()

然后,您可以汇总这组玩家的任何字段,或者其他任何字段。例如,此示例将按顺序显示app中的汇总收益:

代码语言:javascript
复制
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))

输出将为:

代码语言:javascript
复制
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计算它,但这只是为了说明这个想法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50462328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档