我有一个html页面,该页面运行一个for循环以在板上填充学生。这是屏幕截图和代码。
问题:问题是,如果我班上有多个学生,无论我单击页面上的哪个按钮,都不会让我执行POST。如果班上只有一个孩子,则POST将起作用。所以帖子失败了,我不知道为什么。我在这里先向您的帮助表示感谢。
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% crispy K8Points_ClassroomForm %}
{% load static %}
{% block content %}
<br>
<h2>{% load static %}
<img src="{% static 'forms/star.png' %}" alt="chain" height="62" width="62"> My Classroom</h2>
<br>
<br>
<form action="/points/k8_points_classroom" method="POST">
{% csrf_token %}
<!-- Start Date -->
<div class="container">
<div class="container">
<div class='row'>
<div class="col-4">
<p> Recording Data as User : {{user.username}} </p>
<p><b> Classroom : {{class_name}} </b></p>
</div>
</div>
<div class='row'>
<div class = "col-2">
{{form.date|as_crispy_field }}
</div>
<div class = "col-2">
{{form.week_of|as_crispy_field }}
</div>
<div class = "col-2">
{{form.day|as_crispy_field }}
</div>
</div>
</div>
<div class="jumbotron" align="middle">
<h1>My Students</h1>
<!-- Line Break -->
<hr style="border: 1px solid black;"/>
<!-- Line Break -->
<div class="row mb-3">
{% for i in students %}
<div class="col-md-4 themed-grid-col"><h2>{{i.student_name}}</h2>
<p align="left"> Today's Score: </p>
<h4>
<button type="button" class="btn btn-primary btn-lg btn-block" data-toggle="modal"
data-target="#PointsBox1">Level Up
</button>
</h4>
<div id="PointsBox1" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<img src="{% static 'forms/star.png' %}" align="left" alt="chain" height="42"
width="42">
<h4 class="modal-title">Points Confirmation </h4>
<button type="button" class="close" data-dismiss="modal"> ×</button>
</div>
<div class="modal-body">
<h6>
<div class="modal-body">Please add the selected points for the current
student.</div>
</h6>
<div class="form-row" align='left'>
<div class="col-7">
{{form.class_name|as_crispy_field }}
{{form.student_name|as_crispy_field }}
{{form.time_frame|as_crispy_field }}
</div>
</div>
<div class="form-row">
<div class="col-3" align='left'>
{{form.behavior|as_crispy_field }}
{{form.academic|as_crispy_field }}
<button type="submit" class="btn btn-success"><i
class="fas fa-star"></i> Level Up
</button>
</div>
</div>
</div>
<div class="modal-foot"></div>
</div>
</div>
</div>
</div>
</form>
{% endfor %}
{% endblock %}
答案 0 :(得分:1)
很难确切知道发生了什么,因为尽管您提到“我单击它不会让我执行POST”,但您并未确切提及它会跳出什么错误,或者根本就不会跳出一个错误,但是不会将信息保存在数据库中。
但是,我将从两件事开始:
您设计的html中存在错误。例如,您在代码的开头打开了form
标签,但是随后您运行了{% for i in students %}
,并在其中for
中使用了</form>
,这意味着当您拥有几个学生,您的代码将仅具有一个<form>
标签,但将具有多个</form>
标签(我认为这可能会产生错误)。
尝试查看request.POST,以查看只有一个用户时与有多个用户时的区别。在将信息保存在数据库中的视图中,使用print(request.POST),可以帮助您进行调试。