【问题标题】:UnboundLocalError: local variable referenced before assignmentUnboundLocalError:赋值前引用的局部变量
【发布时间】:2012-11-14 15:24:14
【问题描述】:

我正在尝试创建一个简单的表单,用户可以在其中插入信息。如果用户单击发送按钮,将显示信息。

这是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})

我总是收到此错误消息“UnboundLocalError:分配前引用的局部变量 'NhanthuModelbien'”。 谁能指出这里出了什么问题?

【问题讨论】:

标签: python google-app-engine


【解决方案1】:

如果条件request.method =="POST" and form_test.validate(request.form) 为假,则变量不会被初始化。然后在初始化查询query = NhanthuModelbien.all().order('-created') 时尝试使用它。

只需在if之前声明它并将其初始化为默认值。

【讨论】:

  • 但第一步始终是输入数据并单击发送按钮。因此,变量应该被初始化
  • 是成员变量还是全局变量?因为如果它是本地的并且条件为假,那么你在初始化之前尝试使用它。
  • 嗨,这是我的模特。我该如何初始化它?类 NhanThu(db.Model): 主题 = db.TextProperty(required=False) 消息 = db.TextProperty(required=False) 发件人 = db.EmailProperty(required=False) cc_myself = db.BooleanProperty(required=False)跨度>
  • 好的,所以它是一个类,它是在 myapp.models 上定义的吗?如果是这样,请尝试在顶部添加“from myapp.models import NhanthuModelbien”和其他导入。
  • query = NhanthuModelbien.all().order('-created') 是原因。我将其更改为 query = NhanthuModelbien.all() 并且可以正常工作。我不知道为什么
猜你喜欢
  • 2013-11-29
  • 2019-09-02
  • 1970-01-01
  • 2015-06-14
  • 2018-06-29
  • 2011-10-31
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多