1

我正在使用 Django 1.41 构建我的 Web 应用程序并使用 GAE 进行部署。这么好,一切似乎都在工作,除非我尝试在注册时向用户发送电子邮件并允许用户更改密码。我得到 NotimplementedError 并且没有提供异常。我在下面粘贴了完整的堆栈。我可能做错了什么?

完整的 Django 回溯

Environment:


Request Method: POST
Request URL: http://1.ngloancalc.appspot.com/register/

Django Version: 1.4.1
Python Version: 2.7.2
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'carloan',
 'registeredmember',
 'contact')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/base/data/home/apps/s~ngloancalc/1.363534897067998089/registeredmember/views.py" in userregistration
  36.             connection.open()
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/mail/backends/smtp.py" in open
  48.                                            local_hostname=DNS_NAME.get_fqdn())
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/mail/utils.py" in get_fqdn
  16.             self._fqdn = socket.getfqdn()
File "/base/python27_runtime/python27_dist/lib/python2.7/socket.py" in getfqdn
  129.         hostname, aliases, ipaddrs = gethostbyaddr(name)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/remote_socket/_remote_socket.py" in gethostbyaddr
  313.   raise NotImplementedError()

Exception Type: NotImplementedError at /register/
Exception Value: 

使用建议的自定义后端后,我收到错误“需要更多一个值来解压”

Environment:


Request Method: POST
Request URL: http://www.ngloancalc.appspot.com/resetpassword/

Django Version: 1.4.1
Python Version: 2.7.2
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'carloan',
 'registeredmember',
 'contact')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/utils/decorators.py" in _wrapped_view
  91.                     response = view_func(request, *args, **kwargs)
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/contrib/auth/views.py" in password_reset
  160.             form.save(**opts)
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/contrib/auth/forms.py" in save
  242.             send_mail(subject, email, from_email, [user.email])
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/mail/__init__.py" in send_mail
  59.                                     fail_silently=fail_silently)
File "/base/python27_runtime/python27_lib/versions/third_party/django-1.4/django/core/mail/__init__.py" in get_connection
  31.         mod_name, klass_name = path.rsplit('.', 1)

Exception Type: ValueError at /resetpassword/
Exception Value: need more than 1 value to unpack
4

2 回答 2

3

Django 的电子邮件后端不适用于 App Engine 的电子邮件 API。

其他人已经创建了一个,但是

https://bitbucket.org/andialbrecht/appengine_emailbackends/overview

于 2012-11-30T16:02:44.053 回答
1

仅用于开发目的的另一个解决方法是:

email_message.extra_headers['message-id'] = 'mydummymessageid'

这可以防止 Django 尝试创建一个,因此永远不会最终尝试在 GAE 开发环境中调用gethostbyaddr

于 2013-04-04T10:33:49.127 回答