【问题标题】:Django/App Engine/Python 2.5: default __new__ takes no parametersDjango/App Engine/Python 2.5:默认 __new__ 不带参数
【发布时间】:2010-03-04 07:53:27
【问题描述】:

应用引擎和 django 的新手。我认为这是我的 django 安装的问题,即 1.1.1,但我也读到我可以使用与应用引擎 SDK 一起打包的 django。

如果我在本地测试时遇到此错误,我们将不胜感激。

回调:

Variable Value
callback 
<class 'ourlat.main.views.SettingsPage'>
callback_args 
()
callback_kwargs 
{}
e 
TypeError('default __new__ takes no parameters',)
exc_info 
(<type 'exceptions.TypeError'>, TypeError('default __new__ takes no parameters',), <traceback object at 0x02201B48>)
exceptions 
<module 'django.core.exceptions' from 'C:\Documents and Settings\Jeremy Gordon\eclipse-workspace\ourlat\django\core\exceptions.pyc'>
middleware_method 
<bound method CommonMiddleware.process_request of <django.middleware.common.CommonMiddleware object at 0x021F5170>>
receivers 
[(<function _rollback_on_exception at 0x02063730>, None)]
request 
<WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'APPLICATION_ID': 'ourlat', 'AUTH_DOMAIN': 'gmail.com', 'CONTENT_LENGTH': '', 'CONTENT_TYPE': 'application/x-www-form-urlencoded', 'CURRENT_VERSION_ID': '1.1', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8', 'HTTP_CACHE_CONTROL': 'max-age=0', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_HOST': 'localhost:8080', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.1 (KHTML, like Gecko) Chrome/5.0.335.1 Safari/533.1', 'PATH_INFO': u'/', 'PATH_TRANSLATED': 'C:\\Documents and Settings\\Jeremy Gordon\\eclipse-workspace\\ourlat\\main.py', 'QUERY_STRING': '', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '8080', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'Development/1.0', 'TZ': 'UTC', 'USER_EMAIL': '', 'USER_ID': '', 'USER_ORGANIZATION': '', 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x00B1F0B0>, 'wsgi.input': <cStringIO.StringI object at 0x022A0260>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': True, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>
resolver 
<RegexURLResolver urls (None:None) ^/>
response 
None
self 
<django.core.handlers.wsgi.WSGIHandler object at 0x021F5790>
settings 
<django.conf.LazySettings object at 0x01E997B0>
urlconf 
'urls'
urlresolvers 
<module 'django.core.urlresolvers' from 'C:\Documents and Settings\Jeremy Gordon\eclipse-workspace\ourlat\django\core\urlresolvers.pyc'>

错误:

TypeError at /
default __new__ takes no parameters
Request Method: GET
Request URL: http://localhost:8080/
Exception Type: TypeError
Exception Value: 
default __new__ takes no parameters
Exception Location: C:\Documents and Settings\Jeremy Gordon\eclipse-workspace\ourlat\django\core\handlers\base.py in get_response, line 92
Python Executable: C:\Python25\python.exe
Python Version: 2.5.0
Python Path: ['C:\\Documents and Settings\\Jeremy Gordon\\eclipse-workspace\\ourlat', 'C:\\Program Files\\Google\\google_appengine', 'C:\\Program Files\\Google\\google_appengine\\lib\\antlr3', 'C:\\Program Files\\Google\\google_appengine\\lib\\django', 'C:\\Program Files\\Google\\google_appengine\\lib\\ipaddr', 'C:\\Program Files\\Google\\google_appengine\\lib\\webob', 'C:\\Program Files\\Google\\google_appengine\\lib\\yaml\\lib', 'C:\\Program Files\\Google\\google_appengine', 'C:\\Python25\\lib\\site-packages\\beautifulsoup-3.1.0.1-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\django-1.1.1-py2.5.egg', 'C:\\Documents and Settings\\Jeremy Gordon\\eclipse-workspace\\ourlat\\ourlat', 'C:\\Program Files\\Google\\google_appengine', 'C:\\Program Files\\Google\\google_appengine\\lib\\webob', 'C:\\Program Files\\Google\\google_appengine\\lib\\yaml', 'C:\\Program Files\\Google\\google_appengine\\lib', 'C:\\Program Files\\Google\\google_appengine\\lib\\simplejson-2.0.9', 'C:\\Program Files\\Google\\google_appengine\\lib\\geopy', 'C:\\Program Files\\Google\\google_appengine\\lib\\BeautifulSoup-3.0.8', 'C:\\Documents and Settings\\Jeremy Gordon\\eclipse-workspace\\ourlat\\django', 'C:\\Python25', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\setuptools-0.6c7-py2.5.egg', 'C:\\Python25\\lib\\site-packages\\simplejson-2.0.9-py2.5.egg', 'C:\\Python25\\Lib\\site-packages\\geopy-0.93dev_r0-py2.5.egg', 'C:\\WINDOWS\\system32\\python25.zip']
Server time: Sat, 6 Mar 2010 01:18:27 +0000

设置页面来源

class SettingsPage(webapp.RequestHandler):
    def get(self):
        if users.get_current_user():
            url = users.create_logout_url(self.request.uri)
            url_linktext = 'Logout'
            account_query = OLAccount.all().filter('owner =',users.get_current_user())
            if account_query.count() < 1:
                thisuser = OLAccount(owner = users.get_current_user())
                thisuser.put()
            else:
                thisuser = account_query.fetch(1)[0]

            tracks = [db.get(key) for key in thisuser.track_keys] 
            template_values = {
                'url': url,
                'url_linktext': url_linktext,
                'thisuser': thisuser,
                'tracks': tracks
                }

            path = os.path.join(os.path.dirname(__file__), 'html/settings.html')
            self.response.out.write(template.render(path, template_values))
        else:
            self.redirect(users.create_login_url(self.request.uri))

【问题讨论】:

  • 请正确缩进。如果您阅读页面的右侧,它会说代码缩进 4 个空格。如果您查看文本框,它有一个带有“101010”图像的按钮,它将为您执行此操作。请更正您的问题以使用空格缩进并包含足够的代码以便我们可以解释错误消息。

标签: python django google-app-engine


【解决方案1】:

您似乎已经使用带有非标准签名的__init__(但不是__new__)子类化(至少一次)Django 的视图类。如果您单击此消息开头的三角形(在您自己的环境中 - 当然,单击在 SO 中的此复制/粘贴消息上不起作用;-)您应该看到局部变量,例如包括callback 这是您尝试调用的视图(来自您的 URL 解析器,请参阅第 68 行的 the source)——此信息将有助于进一步调试。

编辑:看起来问题在于您正在混合和匹配 Django 的 urlresolvers(它期望 Django-id 可调用,以请求作为参数)与 Google 的 webapp.RequestHandler 的子类( __init__) 中不接受参数:不要那样做。使用 app.yaml 选择 .py 脚本处理对应用程序中每组路径的请求,并且在每个 .py 脚本中仅使用 Django 或仅使用 webapp - 不混合。

顺便说一句,应用引擎SDK自带的Django是0.96,和google服务器上默认的一样;但是在 google 的服务器上,您可以使用 use_library 轻松切换到更现代的 django 版本,而在您的 SDK 上则不能——也就是说,如果没有在本地安装您自己的 django 和c。请参阅我刚刚指向您的页面及其链接。

【讨论】:

  • 添加了回溯和设置页面源,这似乎有牵连。感谢您花时间看这个,我假设这是新手的某种错误,这是我第一次尝试建立一个 django/GAE 项目。
  • 啊,是的,看起来我混合并匹配了来自两个不同地方的解决方案。仍在弄清楚使用 django 模板和 webapp 模板之间的区别。非常感谢!真的很感激朝着正确的方向前进。
  • @Jeremy,谢谢,很好,接受答案更好(使用赞成票数旁边的复选标记图标来表示您想要接受的答案,例如在这种情况下是大 0;-) .接受一个答案也会给你 2 点声望,让你接近 15 分的神奇阈值,在那里你还可以“投票”回答(包括你自己的问题和其他问题)——在 @987654323 阅读 StackOverflow 的基本机制@.
猜你喜欢
  • 2011-01-26
  • 2013-06-09
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 2016-04-03
  • 1970-01-01
相关资源
最近更新 更多