【问题标题】:Got this UnboundLocalError at /nesting/ local variable 'content' referenced before assignment在分配之前引用的 /nesting/ 局部变量 'content' 处得到了这个 UnboundLocalError
【发布时间】:2017-10-04 17:18:34
【问题描述】:

我想在填写表单的用户未在表单中输入有效信息时显示必要的字段错误。

但是,每次我通过单击提交按钮而不填充任何字段来测试错误脚本时都会收到此错误:

UnboundLocalError 在 /nesting/ 局部变量“内容”被引用 分配前

我该如何纠正这个问题?

这是我的代码:

veiws.py

from django.shortcuts import render, redirect
from django.views.generic import TemplateView

from nesting.forms import Identity_form
from nesting.models import Identity_unique



class Identity_view(TemplateView):

    template_name = 'nesting/nesting.html'

    def get(self, request):

        form = Identity_form()

        Identities = Identity_unique.objects.filter(user = request.user)
        var = {'form': form, 'Identities': Identities}
        return render(request, self.template_name, var)

    def post(self, request):



        form  = Identity_form(request.POST or None)



        if form.is_valid():

            NIS = form.save(commit = False)
            NIS.user = request.user
            NIS.save()


            content = form.cleaned_data['NIS']

            form = Identity_form()


            return redirect('nesting:nesting')

        var = {'form': form, 'content': content}

        return render(request,self.template_name, var)

错误消息说错误是由这一行引起的

        var = {'form': form, 'content': content}
        return render(request,self.template_name, var)

嵌套.html

{% extends 'base.html' %}
{% load widget_tweaks %}


<html>

    <head>

       {% block head %}

    <title>nesting</title>

    {% endblock %}

    </head>

    <body>

    {% block body %}


    <div class = "container"  style = "margin-top: 80px;">



              <form method = 'post' novalidate>

{% csrf_token %}

                {% for hidden_field in form.hidden_fields %}
                  {{ hidden_field }}
                {% endfor %}


   <div class = "col-sm-8 col-md-8 col-lg-6">

     <p class = "font-weight-bold">Create Patient</p>

                    {% if form.non_field_errors %}

                    <div class = "alert alert-danger" role = "alert">

                      {% for error in form.non_field_errors %}

                      {{ error }}

                      {% endfor %}

                    </div>

                    {% endif %}


  {% for field in form.visible_fields %}


          <div class = "form-group">

                       {% if form.is_bound %}
                               {% if field.errors %}
                                  {% render_field field class="form-control is-invalid" %}
                                  {% for error in field.errors %}

                                  <div class = "invalid-feedback ">
                                    {{ error }}
                                  </div>

                                  {% endfor %}
                                {% else %}
                                    {% render_field field class="form-control is-valid" %}

                                    {% endif %}
                                    {% else %}

                                    {% render_field field class="form-control" %}

                                    {% endif %}

                    {% if field.help_text %}
                    <small class = "form-text text-muted">{{ field.help_text }}</small>
                    {% endif %}

          </div>
    {% endfor %}

  <button class = "btn-primary btn-large btn ">Submit</button>



</div>

                </form>

        </div>

         <div class = "col-sm-8 col-md-6 col-lg-6">

  {% for Identity in Identities %}


      <div class = "card" style = "margin-top: 40px;">



          <div class = "card-header">

            <p class="font-weight-bold"> {{Identity.First_Name}}  {{Identity.Last_Name}} </p>

          </div>

        <div class = "card-body">



            <div class = "card-title">
             <p class = "font-weight-light" style = "font-family: Optima">National Insurance Scheme : {{ Identity.NIS }}</p>
           </div>

             <p><small class = "card-text">Created On : {{ Identity.Timestamp }}</small></p>

             <p><small class = "card-text">Address : {{ Identity.Residence }}</small></p>



      </div>


  </div>
      {% endfor %}
</div>

  </div>

    {% endblock %}

  </body>

  </html>

【问题讨论】:

  • 您所说的错误来自的 var = {'form': form, 'content': content} 行实际上似乎不在您的代码中的任何位置。
  • @user2357112 该行应该在views.py文档中。

标签: python django forms


【解决方案1】:

在你看来。 contentvar = {'form': form, 'content': content} 中被引用。它仅在 if form.is_valid() 块之后实例化。

当您的表单无效时会发生 unboundError,然后 var = {'form': form, 'content': content} 没有任何名为 content 的变量可供引用。

修复:在 if form.is_valid() 块之前实例化 contentcontent = None

【讨论】:

    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多