/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 个空格,然后将您的编辑器配置为在用作缩进时展开制表符。