如何在django进行统计

如何在django进行统计,django,Django,我使用django fobi允许用户创建自己的表单。我想根据这些表格做一些报告和统计 我有一个可用的python代码,但我不知道如何在django工作模板中翻译该代码 数据如下: saved_data = ''' [ [{ "label": "Question 1?", "html_name": "question_1", "first_name": "John", "last_name":

我使用django fobi允许用户创建自己的表单。我想根据这些表格做一些报告和统计

我有一个可用的python代码,但我不知道如何在django工作模板中翻译该代码

数据如下:

saved_data = '''
  [
       [{
           "label": "Question 1?",
           "html_name": "question_1",
           "first_name": "John",
           "last_name": "Doe",
           "email": "john@doe.com",
           "answer": "Yes"
         }, {
           "label": "Question 2?",
           "html_name": "question_2",
           "first_name": "John",
           "last_name": "Doe",
           "email": "john@doe.com",
           "answer": ["Red", "White"]
       }],
       [{
           "label": "Question 1?",
           "html_name": "question_1",
           "first_name": "Jane",
           "last_name": "Mary",
           "email": "mary@jane.com",
           "answer": "No"
         }, {
           "label": "Question 2?",
           "html_name": "question_2",
           "first_name": "Jane",
           "last_name": "Mary",
           "email": "mary@jane.com",
           "answer": ["Red", "Black"]
         }]
  ]

'''

data = json.loads(saved_data)

answer = {}

for x in data:
    for y in x:
        if type(y['answer']) is list:
            for an in y['answer']:
                answer.setdefault(y['label'], {})\
                    .setdefault('answer', []).append(an)
                answer.setdefault(y['label'], {}).setdefault('full_name', []).append(y['first_name'] + ' ' + y['last_name'])
                answer.setdefault(y['label'], {}).setdefault('email', []).append(y['email'])
        elif type(y['answer']) is str:
            answer.setdefault(y['label'], {})\
                .setdefault('answer', []).append(y['answer'])
            answer.setdefault(y['label'], {}).setdefault('full_name', []).append(y['first_name'] + ' ' + y['last_name'])
            answer.setdefault(y['label'], {}).setdefault('email', []).append(y['email'])

for questions, answers in answer.items():
    print('\n', questions)
    counting = Counter(answers['answer'])
    for key, value in counting.items():
        print(key, value)
        for answer in zip(answers['full_name'], answers['answer']):
            if key == answer[1]:
                print(answer[0])

如何在django 1.11模板中实现此功能?

您需要将其从。例如,可以使用基于函数的视图包装该逻辑并将其放入views.py中。您必须在url.py中添加路由,并使该视图返回模板


在模板中,您可以循环选择答案项目,并以您喜欢的方式显示它们。

我了解django的基本知识。从我的示例中,我可以创建答案dict上下文并在模板中访问它。但我的问题是计数器的代码更深层。我无法在模板中导入它,然后运行示例的最后几行。啊,抱歉,我会尝试一下,因为如果我的头是模板标记,我可以从顶部思考一个黑客,但可能有不同的方法来构建它up@Dragos您可以在视图中执行所有计算,并仅将结果传递给模板,保罗,你能举个例子吗?我花了三个星期来研究这个问题,但我看不出解决办法。我不知道如何从for循环返回上下文。@Dragos的想法不是从循环返回上下文,而是使用循环创建一个数据结构,例如,一个字典,一个传递给上下文的列表。这里有一个简单的例子。