Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Django 表单验证未显示在表单上_Django_Django Views - Fatal编程技术网

Django 表单验证未显示在表单上

Django 表单验证未显示在表单上,django,django-views,Django,Django Views,我有一个在弹出窗口窗体上运行的自定义窗体验证。如果发生表单验证,我会收到一个错误的请求错误,这是我在myviews.py中编程的错误。如何呈现它,以便用户停留在表单上并显示验证消息。谢谢你的帮助。这是我的密码 @login_required def K8_Points_Classroom(request): #context_from_k8_points = request.session['k8_points_context'] if request.method == 'P

我有一个在弹出窗口窗体上运行的自定义窗体验证。如果发生表单验证,我会收到一个错误的请求错误,这是我在myviews.py中编程的错误。如何呈现它,以便用户停留在表单上并显示验证消息。谢谢你的帮助。这是我的密码

@login_required
def K8_Points_Classroom(request):
    #context_from_k8_points = request.session['k8_points_context'] 
    if request.method == 'POST':
        form = K8Points_ClassroomForm(request.POST)
        if form.is_valid():
             form.save(commit=False)
             form.save()
             class_name = form.cleaned_data.get('class_name')
             getstudents = Student.objects.filter(class_name = class_name)
             students = getstudents.all()
             form = K8Points_ClassroomForm()
             context = {'form': form ,'students' : students, 'class_name': class_name,}
             return render(request,'points/k8_points_classroom.html', context)  

        else:
            return HttpResponseBadRequest("Bad Request")      

    else:
      return render(request, 'points/k8_points_classroom.html', {'form': form} )   


更新的form.html

{% 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">  {{class_name}}</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>
                    </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>
       </form>

            <div class="jumbotron" align="middle">
                  <img src="{% static 'forms/levelup.png' %}" alt="levelup" height="120" width= "120">
                <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: {{total}}</p>

                            <h4>
                                <button type="button" class="btn btn-primary btn-lg btn-block" data-toggle="modal"
                                        data-target="#PointsBox{{ student.pk }}">Level Up
                                </button>

                            </h4>
                            <div id="PointsBox{{ student.pk }}" 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"> &times;</button>
                                        </div>
                                        <div class="modal-body">
                                            <h6>
                                                <div class="modal-body">Please add the selected points for the current
                                                    student.</div>
                                            </h6>



                                            <form action="/points/k8_points_classroom" method="POST">
                                                    {% csrf_token %} 
                                            <div class="form-row" align='left'>
                                                <div class="col-7">
                                                    {{form.class_name|as_crispy_field }}
                                                    <input type="student_name" class="form-control" value ="{{i}}" >
                                                    {{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 %}
{%extends'base.html%}
{%load crispy_forms_tags%}
{%crispy K8Points\u ClassroomForm%}
{%load static%}
{%block content%}

{%load static%} {{class_name}}

{%csrf_令牌%} 以用户身份记录数据:{{User.username}

{{form.date}as|u crispy_field} {{form.week|as|u crispy_field} {{form.day}as|u crispy_field} 我的学生
{i在学生中占%} {{i.student_name}

今天的分数:{{total}

升级 积分确认 &时代; 请为当前项目添加选定的点 学生。 {%csrf_令牌%} {{form.class_name}as_crispy_field} {{form.time|u frame|as_crispy_field}} {{form.behavior}as_crispy_field} {{form.academic}as|u crispy_field} 升级 {%endfor%} {%endblock%}
如果表单无效,则不能返回错误响应。相反,请使用无效表单再次呈现页面,然后在temolate中可以呈现错误。尝试使用
{{form.as_p}}
开始呈现表单,您将看到错误。表单错误位于
form.errors
中,每个字段都有自己的错误,您可以访问它们
form.field.erorrs

if request.method == 'POST':
    form = K8Points_ClassroomForm(request.POST)
    if form.is_valid():
         form.save(commit=False)
         form.save()
         class_name = form.cleaned_data.get('class_name')
         getstudents = Student.objects.filter(class_name = class_name)
         students = getstudents.all()
         form = K8Points_ClassroomForm()
         context = {'form': form ,'students' : students, 'class_name': class_name,}
         return render(request,'points/k8_points_classroom.html', context)

return render(request, 'points/k8_points_classroom.html', {'form': form} )   

因此,我在整个表单上将crispy表单标记更改为{{form.as_p}},我仍然没有得到弹出表单上显示的错误。它只是将我踢回到没有学生姓名的页面,因为它不会重新启动查询。当你提交表单时,即使你有错误,整个页面也会重新加载。如果您有任何错误,页面将被重新加载,但这一次表单的
errors
属性中将包含信息。如果您将表单的呈现方式更改为{{form.as_p}},并且仍然没有错误,那么请查看这里,这意味着您的表单类可能有错误。您将需要共享您的表单代码,可能您的错误是刚刚发布了表单html。我有一个运行的for循环,第二个{I.student_name}不起作用,只在每个学生姓名上显示查询集的第一人称姓名。您确定其他对象有
student_name
?你有另一个错误,但也许你还没有看到它。您正在使用相同的id动态创建modals
id=“PointsBox1”
并且id必须是唯一的,请使用对象的
pk
来构造唯一的id,如下所示:
id=“PointsBox{{{student.pk}”
我看到您有两个不同的表单,它们具有不同的数据,并且您在上下文中只发送了一个表单(
K8Points\u ClassroomForm
)。如果你有不同的表单,你需要为每一个表单创建一个表单类。第二个表单在for循环中,你可以添加一个隐藏字段来知道哪个学生在提交表单。另外,看看这里,可能会很有用