2017-10-04 102 views
-1

我想在填充表單的用戶沒有向表單中輸入有效信息時顯示必要的字段錯誤。在分配之前引用的/嵌套/局部變量'content'處獲得此UnboundLocalError

然而,每一個我的時間我點擊提交按鈕不填充任何字段測試錯誤腳本我得到這個錯誤:

UnboundLocalError在/嵌套/局部變量「內容」分配之前引用

我該如何糾正?

這是我的代碼:

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> 
+0

你說錯誤來自的'var = {'form':form,'content':content}'行並不代表你的代碼中的任何地方。 – user2357112

+0

@ user2357112該行應該位於views.py文檔中。 –

+0

請參閱[mcve] – glennsl

回答

1

在您的意見。 content被引用於var = {'form': form, 'content': content}。它僅在if form.is_valid()塊之後實例化。

當您的表單無效時發生unboundError,則var = {'form': form, 'content': content}沒有任何名稱爲content的變量可以引用。

修復:在if form.is_valid()塊之前實例化contentcontent = None

相關問題