【问题标题】:UnboundLocalError- local variable referenced before assignment - DjangoUnboundLocalError- 赋值前引用的局部变量 - Django
【发布时间】:2011-10-31 01:59:22
【问题描述】:

你们这周帮了我很多,真是太棒了。希望你们能帮我解决这个问题。我尝试查看网站上有关此类错误的其他帖子,但没有一个真正帮助我。基本上我在一个页面上提交一个表单,并且 POST 数据将进入与它生成的相同视图。我想在发送 POST 数据后重定向到其他页面,但出现此错误。

def test(request):
    if request.method == 'POST':
        form = SubmitForm(request.POST) # A form bound to the POST data
        if form.is_valid():
            lat = form.cleaned_data['lat'] 
            lng = form.cleaned_data['lng']
            title = form.cleaned_data['title']
            story = form.cleaned_data['story']

            ctxt = {
                    'lat':lat,
                    'lng':lng,
                    'title':title,
                    'story':story,
                    }

            return render_to_response('home.html', ctxt, context_instance=RequestContext(request)) 

    else:

        import datetime
        now = datetime.datetime.now()
        form = SubmitForm()
        latest_marks = Marker.objects.all().order_by('-submitted')[0:10]

        ctxt = {
                'marks':latest_marks,
                'now':now.date(),
                'form': form,
                }
    return render_to_response('test.html', ctxt, context_instance=RequestContext(request)) 

我得到的错误是

local variable 'ctxt' referenced before assignment

回溯是

Environment:


Request Method: POST
Request URL: http://localhost:8000/test/

Django Version: 1.3
Python Version: 2.6.5
Installed Applications:
['django.contrib.staticfiles',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.admin',
 'userena',
 'guardian',
 'easy_thumbnails',
 'south',
 'database',
 'accounts',
 'socialregistration']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'userena.middleware.UserenaLocaleMiddleware',
 'socialregistration.middleware.FacebookMiddleware')


Traceback:
File "/home/wluw/dev/chicagomap/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/home/wluw/dev/chicagomap/chicagomap/../chicagomap/database/views.py" in test
  58.     return render_to_response('test.html', ctxt, context_instance=RequestContext(request)) 

Exception Type: UnboundLocalError at /test/
Exception Value: local variable 'ctxt' referenced before assignment

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: python django django-forms django-views


    【解决方案1】:

    发生这种情况是因为 request.method == 'POST' 为 True(第一个条件通过)但 form.is_valid() 为 False(第二个嵌套条件失败),这意味着运行 else 后的最终返回但未定义 ctxt。

    也许您打算将最后的返回缩进作为else 子句的一部分?

    【讨论】:

    • 好的。这就说得通了。我只需要弄清楚为什么表格无效。
    • form.is_valid() 之后添加print form.errors 行以找出答案。
    猜你喜欢
    • 2020-05-05
    • 2012-11-14
    • 2013-11-29
    • 2019-09-02
    • 1970-01-01
    • 2015-06-14
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多