【问题标题】:UnboundLocalError at /contact/ ---Django 1.8/contact/ 处的 UnboundLocalError ---Django 1.8
【发布时间】:2015-09-23 20:52:39
【问题描述】:

我不断收到错误 在此特定行中的“分配前引用的局部变量'form_message'”: " 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)

【问题讨论】:

    标签: django python-2.7 django-forms django-views


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      相关资源
      最近更新 更多