/contact/ 处的 UnboundLocalError ---Django 1.8
UnboundLocalError at /contact/ ---Django 1.8
我一直收到错误
"local variable 'form_message' referenced before assignment" 在此特定行:
" form_full_name, "
这是我在 Django 1.8 中的代码:
def contact(request):
form = ContactForm(request.POST or None)
if form.is_valid():
form_full_name = form.cleaned_data.get("full_name")
form_email = form.cleaned_data.get("email")
form_message = form.cleaned_data.get("message")
subject = 'Site contact form'
from_email = settings.EMAIL_HOST_USER
to_email = [from_email]
contact_message = "%s: %s via %s"%(
form_full_name,
form_message,
form_email)
send_mail(subject,
contact_message,
from_email,
to_email,
fail_silently=False)
context = {
"form": form,
}
return render(request, "forms.html", context)
您的代码混合了制表符和空格。 Python 将制表符扩展到 8 个空格,而不是 4 个,但您的编辑器和 Stack Overflow 可以。
因此,您的 if form.is_valid():
块 在 form_message = form.cleaned_data.get("message")
行结束 ,并且您的 剩余 函数 不是 if
测试的一部分:
缩进中的每一行都是一个制表符,我已将我的编辑器设置为每个制表符使用 8 个空格,因此您可以看到 Python 如何看待您的函数.
因此,只要 if form.is_valid():
为假,您的 contact_message
行仍会执行并且 form_full_name
未定义。
让您的文本编辑器将所有制表符替换为 4 个空格,然后将您的编辑器配置为在用作缩进时展开制表符。
我一直收到错误 "local variable 'form_message' referenced before assignment" 在此特定行: " form_full_name, "
这是我在 Django 1.8 中的代码:
def contact(request):
form = ContactForm(request.POST or None)
if form.is_valid():
form_full_name = form.cleaned_data.get("full_name")
form_email = form.cleaned_data.get("email")
form_message = form.cleaned_data.get("message")
subject = 'Site contact form'
from_email = settings.EMAIL_HOST_USER
to_email = [from_email]
contact_message = "%s: %s via %s"%(
form_full_name,
form_message,
form_email)
send_mail(subject,
contact_message,
from_email,
to_email,
fail_silently=False)
context = {
"form": form,
}
return render(request, "forms.html", context)
您的代码混合了制表符和空格。 Python 将制表符扩展到 8 个空格,而不是 4 个,但您的编辑器和 Stack Overflow 可以。
因此,您的 if form.is_valid():
块 在 form_message = form.cleaned_data.get("message")
行结束 ,并且您的 剩余 函数 不是 if
测试的一部分:
缩进中的每一行都是一个制表符,我已将我的编辑器设置为每个制表符使用 8 个空格,因此您可以看到 Python 如何看待您的函数.
因此,只要 if form.is_valid():
为假,您的 contact_message
行仍会执行并且 form_full_name
未定义。
让您的文本编辑器将所有制表符替换为 4 个空格,然后将您的编辑器配置为在用作缩进时展开制表符。