【发布时间】:2016-01-12 20:21:35
【问题描述】:
我正在创建一个 django 应用程序,但我不确定我做错了什么。我不断收到错误“分配前引用的局部变量'sigtracker'”这是错误引用的代码。我知道这与表单验证有关,但我不确定我做错了什么。
@login_required
@permission_required('auth.signiture_management')
def add_signiture_view(request):
logger.debug("add_signiture_view called by user %s" % request.user)
if request.method == 'POST':
form = SignitureForm(request.POST)
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
if form.is_valid():
# handle valid form
sigtracker = sigtracker()
sigtracker.ident = form.cleaned_data['ident']
sigtracker.system = form.cleaned_data['system']
sigtracker.name = form.cleaned_data['name']
sigtracker.signiture_type = form.cleaned_data['signiture type']
sigtracker.status = form.cleaned_data['status']
sigtracker.save()
logger.info("Created new signiture in %s at %s by user %s" % (sigtracker.system, request.user))
return HttpResponseRedirect("/sigtracker/")
else:
logger.debug("Returning new SignitureForm")
form = SignitureForm()
render_items = {'form': form}
return render_to_response('registered/addsigniture.html', render_items, context_instance=RequestContext(request))
Environment:
Request Method: POST
Request URL: http://redacted/add_signiture/
Django Version: 1.6.5
Python Version: 2.7.5
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'django_evolution',
'djcelery',
'celerytask',
'bootstrapform',
'authentication',
'portal',
'registration',
'services',
'eveonline',
'groupmanagement',
'hrapplications',
'timerboard',
'srp',
'sigtracker')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
112. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "/home/allianceserver/allianceauth/sigtracker/views.py" in add_signiture_view
46. sigtracker = sigtracker()
Exception Type: UnboundLocalError at /add_signiture/
Exception Value: local variable 'sigtracker' referenced before assignment
【问题讨论】:
-
发布完整的回溯并提醒我们错误中引用了哪些特定行。此外,您的缩进在该功能下是错误的。如果在您的实际代码中是这样的,那可能是您的问题。
-
我希望你有 sigtracker 类。如果是这种情况,您可能不想调用与类相同的变量,这可能会使解析器感到困惑。