2012-11-27 40 views
2

我試圖創建一個用戶可以插入信息的簡單表單。如果用戶點擊發送按鈕,則會顯示信息。UnboundLocalError:分配之前引用的本地變量

以下是views.py中的代碼。

from kay.utils import render_to_response 
from myapp.form import ContactForm 
from myapp.models import NhanThu 
# Create your views here. 
@login_required 
def index(request): 
    form_test = ContactForm() 
    if request.method =="POST" and form_test.validate(request.form): 
     NhanthuModelbien = NhanThu(subject=ContactForm['subject']) 
     NhanthuModelbien.put() 
     return redirect(url_for('myapp/index')) 


    query = NhanthuModelbien.all().order('-created') 
    inthuwhat = query.fetch(20)  
    return render_to_response('myapp/index.html', 
           {'form2': form_test.as_widget(),'inthura': inthuwhat}) 

我總是收到此errorr 「UnboundLocalError:局部變量 'NhanthuModelbien' 引用之前分配」。 有人可以指出這裏有什麼問題嗎?

回答

4

如果條件request.method =="POST" and form_test.validate(request.form)爲false,則變量不會被初始化。然後嘗試初始化查詢query = NhanthuModelbien.all().order('-created')時使用它。

只需聲明它並將其初始化爲if之前的默認值即可。

+1

但第一步是始終輸入數據並單擊發送按鈕。因此,應該初始化變量 – John

+1

它是一個成員變量還是全局變量?如果它是本地的,並且條件爲false,則會導致在初始化之前嘗試使用它。 – imreal

+0

嗨,這是我的模特。我如何初始化它? 類NhanThu(db.Model): 受試者= db.TextProperty(所需=假) 消息= db.TextProperty(所需=假) 發件人= db.EmailProperty(所需=假) cc_myself = db.BooleanProperty(需= False) – John

相關問題