Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django问卷,每个答案有几个分数类别_Python_Html_Django_Django Templates_Django Views - Fatal编程技术网

Python Django问卷,每个答案有几个分数类别

Python Django问卷,每个答案有几个分数类别,python,html,django,django-templates,django-views,Python,Html,Django,Django Templates,Django Views,我对Django非常陌生(当然对HTML已经生疏了),基本上已经看过几次官方教程了。我计划创建一个简单的问卷,其中包含一系列问题,这些问题可以有几个答案,每个答案都有不同类别的特定分数。最后,将添加每个类别的分数,并根据分数显示一条消息 然而,我对如何在模板中显示每个问题的答案有点困惑。我也不确定如何计算最终分数:我应该在模型中创建一个新类来存储分数吗?或者我应该只在views.py中执行它(我现在更喜欢这个解决方案,我不需要将分数存储在DB中,也不需要登录用户) 以下是我到目前为止的情况: m

我对Django非常陌生(当然对HTML已经生疏了),基本上已经看过几次官方教程了。我计划创建一个简单的问卷,其中包含一系列问题,这些问题可以有几个答案,每个答案都有不同类别的特定分数。最后,将添加每个类别的分数,并根据分数显示一条消息

然而,我对如何在模板中显示每个问题的答案有点困惑。我也不确定如何计算最终分数:我应该在模型中创建一个新类来存储分数吗?或者我应该只在views.py中执行它(我现在更喜欢这个解决方案,我不需要将分数存储在DB中,也不需要登录用户)

以下是我到目前为止的情况:

models.py

来自django.db导入模型的

从django.contrib.auth.models导入用户
班级调查问卷(models.Model):
问卷调查文本=models.CharField(最大长度=200)
发布日期=models.datetime字段(“发布日期”)
定义(自我):
返回self.u文本
课堂提问(models.Model):
问卷=models.ForeignKey(问卷,on_delete=models.CASCADE)
问题文本=models.CharField(最大长度=200)
发布日期=models.datetime字段(“发布日期”)
定义(自我):
返回self.question\u文本
课程选择(models.Model):
问题=models.ForeignKey(问题,on_delete=models.CASCADE)
choice_text=models.CharField(最大长度=200)
C1=models.IntegerField(默认值为0)
C2=模型.整数字段(默认值=0)
N1=模型.整数字段(默认值=0)
N2=模型.IntegerField(默认值为0)
N3=models.IntegerField(默认值为0)
N4=models.IntegerField(默认值为0)
定义(自我):
返回self.choice\u文本
课堂提问回复(models.Model):
taker=models.ForeignKey(用户,on_delete=models.CASCADE)
问卷调查=models.ForeignKey(问卷调查,删除=models.CASCADE)
C1_分数=models.IntegerField(默认值=0)
C2_分数=models.IntegerField(默认值=0)
N1_分数=models.IntegerField(默认值=0)
N2_分数=models.IntegerField(默认值=0)
N3_分数=models.IntegerField(默认值=0)
N4_分数=models.IntegerField(默认值=0)
定义(自我):
返回str(自选)
views.py

从django.exe导入渲染
从django.http导入HttpResponse
从django.template导入加载器
模型导入问题、问卷、选择
def索引(请求):
最新问卷调查列表=问卷调查。对象。顺序('-pub_date')[:5]
template=loader.get_模板('test/index.html'))
上下文={
“最新调查问卷列表”:最新调查问卷列表
}
返回HttpResponse(template.render(上下文,请求))
def详细信息(请求):
最新的问题列表=question.objects.all()
template=loader.get_模板('test/detail.html'))
上下文={
“最新问题列表”:最新问题列表
}
返回HttpResponse(template.render(上下文,请求))
def结果(请求):
问卷\实例=QuestionnaResistence.objects.get(taker=request.user)
answer\u instance=Choice.objects.all()
如果request.method==“POST”:
问卷调查\实例.C1 \分数=+答案\实例.值\列表('C1',flat=True)[选定答案]\不知道如何在此处调用特定选定答案的分数
url.py

从django.url导入路径
从…起导入视图
应用程序名称='测试'
URL模式=[
路径(“”,views.index,name='index'),
路径('detail/',views.detail,name='detail'),
路径('results/',views.results,name='results'),
]
detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
{% if latest_question_list %}
{% for item in latest_question_list %}
<h1>{{ item.question_text}}</h1>
    {% for answer in item.choice_set.all %}
    <form action="{% url 'oritest:results'%}" method="post">
    <p>
    {% csrf_token %}
        <input type="checkbox" name="answer" id="answer"
        value="{{ answer.id }}">
    <label for="answer">{{ answer.choice_text }}
    </label><br>
    </p>
    {% endfor %}
{% endfor %}


<input type="submit" value="Confirm">
<input type="button" onclick="history.back();" value="Back">

</form>
{% else %}
    <p>No polls are available.</p>
{% endif %}
</body>
</html>

试验
{%if最新问题列表%}
{最新问题列表%中项目的百分比}
{{项目.问题{文本}
{item.choice_set.all%}中的答案为%

{%csrf_令牌%}
{{answer.choice_text}

{%endfor%} {%endfor%} {%else%} 没有投票

{%endif%}
我想:

1) 让
detail.html
用单选按钮显示每个问题及其答案

2) 在
views.py
中添加分数(可能在我的函数
results
中,并在
results.html
中显示),然后根据该分数执行操作

编辑:我已经自己解决了第一个问题(请参见
detail.html
的代码)。我以后可能会玩一些脆的形状来让它变得更好,但到目前为止它看起来像我想要的那样。不过,我还得弄清楚评分系统

我已经将
questionnairencement
类添加到
models.py
以存储
Choice
的分数。我想我必须:

1) 在我的视图中实例化(例如)C1_分数和结果中的C1

2) 在
结果中也有类似于
C1\u分数=+C1
的内容

3) 根据C1_分数,在results.html中显示某些内容(例如用户分数和图片)

不过,我不确定根据用户实例化C1_分数的语法


Edit2:是否有任何信息需要我添加才能获得提示?

对于表单本身,我强烈推荐crispy表单。它们看起来不错,可以节省一点工作量


我建议您将正确答案存储在数据库中,以便于评分,并创建一个响应模型来存储提交的答案。然后,在每个问题之后,您将通过success_url将响应pk传递给呈现结果模板的结果视图

谢谢。我已经设法使我的detail.html看起来像我想要的(见上面的编辑)。我还在我的模型中创建了一个新的
问题回复
类来存储我的
选择的每个值