关于GAE的Django NotimplementedError

时间:2012-11-30 11:28:04

标签: django google-app-engine

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

完整的Django Traceback

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

2 个答案:

答案 0 :(得分:3)

Django的电子邮件后端无法与App Engine的电子邮件API一起使用。

其他人创造了一个虽然

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

答案 1 :(得分:1)

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

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

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