python - Django Forms 和 'tuple' 对象没有属性 'rsplit' 错误

标签 python django django-forms django-views

我花了几天时间试图解决这个问题,但绝对碰壁了。我已经研究并阅读了有关此问题的所有 SO 帖子,但最终需要一些帮助。

我正在尝试连接一个简单的联系表单,下面是我的代码的最新版本,当我提交表单时,它抛出相同的“tuple”对象没有属性“rsplit”错误

我的 Django 版本是 1.9,使用 Python3.5

def contact(request):
    title = 'Contact Us'
    title_align_center = True
    form = ContactForm(request.POST or None)

    if form.is_valid():
        form_email = form.cleaned_data.get('email')
        form_message = form.cleaned_data.get('message')
        form_full_name = form.cleaned_data.get('full_name')
        subject = 'Site Contact Form'
        from_email = settings.DEFAULT_FROM_EMAIL
        recipient_list = [from_email, '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a0c3c8c1d2ccc5d3e0d3d4d5c4c9cfd2cfcfd3d4c5d28ec3cfcd" rel="noreferrer noopener nofollow">[email protected]</a>']
        message = '%s: %s via %s' % (
            form_full_name,
            form_message,
            form_email)
        # some_html_message = ''' <h1>hello</h1> '''

        email = EmailMessage(
            subject,
            message,
            form_email,
            recipient_list,
            ['<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="73011c1c000716011c1e1433141e121a1f5d101c1e" rel="noreferrer noopener nofollow">[email protected]</a>'],
            reply_to=[from_email],
            headers={'Reply-To': from_email},
        )
        email.send()

    context = {
        'form': form,
        'title': title,
        'title_align_center': title_align_center,
    }
    return render(request, 'pages/contact.html', context)

回溯

Environment:

Request Method: POST
Request URL: http://127.0.0.1:8001/contact/

Django Version: 1.9
Python Version: 3.5.1
Installed Applications:
['accounts',
 'comments',
 'pages',
 'posts',
 'search',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django_summernote']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/Users/rooster/Documents/Development/boston_intercom/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "/Users/rooster/Documents/Development/boston_intercom/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/rooster/Documents/Development/boston_intercom/pages/views.py" in contact
  80.         email.send()

File "/Users/rooster/Documents/Development/boston_intercom/venv/lib/python3.5/site-packages/django/core/mail/message.py" in send
  292.         return self.get_connection(fail_silently).send_messages([self])

File "/Users/rooster/Documents/Development/boston_intercom/venv/lib/python3.5/site-packages/django/core/mail/message.py" in get_connection
  250.             self.connection = get_connection(fail_silently=fail_silently)

File "/Users/rooster/Documents/Development/boston_intercom/venv/lib/python3.5/site-packages/django/core/mail/__init__.py" in get_connection
  36.     klass = import_string(backend or settings.EMAIL_BACKEND)

File "/Users/rooster/Documents/Development/boston_intercom/venv/lib/python3.5/site-packages/django/utils/module_loading.py" in import_string
  15.         module_path, class_name = dotted_path.rsplit('.', 1)

Exception Type: AttributeError at /contact/
Exception Value: 'tuple' object has no attribute 'rsplit'

最佳答案

那么问题出在您的默认邮件设置的 settings.py 文件中,正如您在回溯中看到的那样,EMAIL_BACKEND 设置可能是问题所在。

这些设置应该是这样的:

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6e17011b1c0b030f07022e09030f0702400d0103" rel="noreferrer noopener nofollow">[email protected]</a>'
EMAIL_HOST_PASSWORD = 'yourpassword'
EMAIL_PORT = 587
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL =  '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8bf2e4fef9eee6eae2e7cbece6eae2e7a5e8e4e6" rel="noreferrer noopener nofollow">[email protected]</a>'

关于python - Django Forms 和 'tuple' 对象没有属性 'rsplit' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40778038/

相关文章:

xml - PyXB 和 python 框架

python - 提交表单后,两个字段未保存。 Django

python - ModelForm 中的 Django 查询集使用 'pk'

python - Unicode解码错误: 'ascii' codec can't decode '\xc3\xa8' together with '\xe8'

python - 检查一系列二进制状态

django-tinymce HTMLField - 在管理中粘贴为纯文本

Python:如何使用存储在变量中的值来决定启动哪个类实例?

python - 如何在 python 中将超时和重试装饰器函数应用于 google-cloud-storage 客户端?

python - IOError: [Errno 输入溢出] -9981

无法在 Django 中检索 JavaScript cookie 值