2012-07-05 4 views
-2

나는이 코드를 실행하려고 할 때 주어진 뷰와 템플릿 코드를 가지고 있는데, 다음과 같은 errors.when을 검색하면이 오류 유형을 검색 할 때 변수와 함수 동일한 이름이 주어 지지만 내 코드에서이를 수정할 수는 없습니다.Django를 해결하는 방법 : UnboundLocalError

Environment: 

Request Method: GET 
Request URL: http://127.0.0.1:8000/budget/show/ 
Django Version: 1.2.5 
Python Version: 2.7.1 
Installed Applications: 
['django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'mysite.bug'] 
    Installed Middleware: 
    ('django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
    File "/usr/lib/pymodules/python2.7/django/core/handlers/base.py" in get_response 100.      response = callback(request, *callback_args, **callback_kwargs) 
    File "/home/nimesh/budman/mysite/../mysite/bug/views.py" in shown 252.    
    return render_to_response('budgetfinalform3.html', {'account_number': c,'period':d,'month':e,'year':f,'formsetlist': formset,'child':child},context_instance=RequestContext(request)) 

    Exception Type: UnboundLocalError at /budget/show/ 
    Exception Value: local variable 'formset' referenced before assignment     

plz이 오류를 제거하는 데 도움을주세요.

def show (request): 
b = request.session["s1"] 
c = request.session["s2"] 
d = request.session["s3"] 
a = account_period.objects.filter(year=d).values('id') 
e = account_period.objects.filter(year=d).values('month') 
f = account_period.objects.filter(id = a).values('year') 

try: 
     child = account_tab.objects.filter(parent_account_number=c).values('account_number') 
     noofchild = account_tab.objects.filter(parent_account_number=c).count() 
except account_tab.DoesNotExist: 
     noofchild = 0 
if noofchild != 0 : 
     formsetlist = [] 


     for i in range(0, noofchild): 
     formsetlist.append(formset_factory(bu, extra=b)) 
    if request.method == 'POST': 

    formsetlist2.append(formsetlist[i](request.POST)) 

    if formsetlist2[i].is_valid(): 
     j=0 
     for form in formsetlist2[i].forms: 
     z = account_tab.objects.get(account_number = child[i:(i+1)]) 
     x = form.cleaned_data['value'] 
     y = account_period.objects.get(id=a[j:(j+1)]) 
     try: 
       uip = budget.objects.get(account_no = child[i:(i+1)],account_period = a[j:(j+1)]) 
       if uip.budget_amount != x: 

        uip.budget_amount = x 
        uip.save() 

     except budget.DoesNotExist: 

       w = budget(account_no = z, account_period = y, budget_amount = x, created_by_login = 'me') 
       w.save() 
     j=j+1 
     pass 
     return HttpResponse('thanks') 


    else: 
      return render_to_response('budgetfinalform3.html', {'account_number': c,'period':d,'month':e,'year':f,'formsetlist': formset,'child':child},context_instance=RequestContext(request)) 
    #return HttpResponse(mes) 

템플릿 코드는

<html> 
    <head> 
    <title>BUDGET</title> 
    </head> 
    <body> 
    <h1>BUDGET MANAGEMENTS</h1> 
    <h2>Your Account Number is : {{ account_number }}.</h2> <h2>You Chose {{ period }} {{month}} as period</h2> 

    {% if form.errors %} 
    <p style="color: red;"> 
     Please correct the error{{ form.errors|pluralize }} below. 
    </p> 
    {% endif %} 


    <form action="." method="post">{% csrf_token %} 
    {% for formset in formsetlist %} 
    {{ formset.management_form }} 
    {{child}} 

    <table> 
    {% for form in formset.forms %} 

    {% if forloop.counter == 0 %} 
    {{child.1}} 
    {% endif%} 
    {{ form }} 
    {% endfor %} 
    </table> 
    {% endfor %} 
    <input type="submit" value="Submit"> 
    </form> 
    </body> 
    </html> 
+0

당신의 들여 쓰기 및 서식을 수정하십시오. 그리고 조금 더 오류 출력을 포함 – scytale

+0

@scytale 내가 오류 정보를 제공하고 내게 초보자 나와 함께 코드를 들여 쓰려고했습니다 – nimeshkiranverma

+0

보기의 들여 쓰기가 여전히 엉망입니다. 당신을 도와달라고 요청하는 사람들에게 예의 바르게 고쳐주십시오. 템플릿 변수가 제대로 설정되지 않은 것 같습니다. 'formsetlist'가 정확히 채워지는지보기 위해 print 문을 넣으십시오. – scytale

답변

0
return render_to_response('budgetfinalform3.html', {'account_number': c,'period':d,'month':e,'year':f,'formsetlist': formset,'child':child},context_instance=RequestContext(request)) 

formset를 사용하지만, 그것은 당신이 formsetlist을 의미 같은 소리/같습니다

return render_to_response('budgetfinalform3.html', {'account_number': c,'period':d,'month':e,'year':f,'formsetlist': formsetlist,'child':child},context_instance=RequestContext(request)) 
+0

제가 변경을 제안하면 양식과 필드가없는 웹 페이지가 생깁니다. – nimeshkiranverma

+0

그런 다음 * 다른 문제가 생겼지 만 이는 'UnboundLocalError'문제를 해결합니다. Barnaby의 답변을 수락하고 다른 문제가있는 경우 새로운 질문을 엽니 다. –