python - 为什么我会收到 TypeError : get() takes exactly 2 arguments (1 given)? Google App Engine

标签 python google-app-engine web-applications

我已经尝试了好几个小时了,一定有一个简单的方法来检索 url。我以为是这样:

#from data.models import Program

import basehandler

class ProgramViewHandler(basehandler.BaseHandler):
    def get(self,slug):
#        query = Program.all()
#        query.filter('slug =', fslug)
        self.render_template('../presentation/program.html',{})

每当执行此代码时,我都会在堆栈跟踪中收到此错误:

appengine\ext\webapp__init__.py”,第 511 行,在调用 handler.get(*组) TypeError: get() 正好接受 2 个参数(给定 1 个)

我也做过一些调试,但是这种调试超出了我的调试水平。当我从 def get(self,slug) 中删除 slug 时,一切运行正常。

这是基本处理程序:

import os

from google.appengine.ext import webapp
from google.appengine.ext.webapp import template



class BaseHandler(webapp.RequestHandler):
    def __init__(self,**kw):
        webapp.RequestHandler.__init__(BaseHandler, **kw)

    def render_template(self, template_file, data=None, **kw):
        path = os.path.join(os.path.dirname(__file__), template_file)
        self.response.out.write(template.render(path, data))

如果有人能给我指出正确的方向,那就太好了!谢谢!第一次用stackoverflow发题,一般都是为了解决自己遇到的问题才看的。

最佳答案

您收到此错误是因为调用 ProgramViewHandler.get() 时没有使用 slug 参数。

很可能,您需要修复 main.py 文件中的 URL 映射。您的 URL 映射可能看起来像这样:

application = webapp.WSGIApplication([(r'/(.*)', ProgramViewHandler)])

括号表示正则表达式分组。这些匹配的组作为参数传递给您的处理程序。因此在上面的示例中,URL 中首字母“/”之后的所有内容都将传递给 ProgramViewHandler.get()slug 参数。

在 webapp 中了解有关 URL 映射的更多信息 here .

关于python - 为什么我会收到 TypeError : get() takes exactly 2 arguments (1 given)? Google App Engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3119562/

相关文章:

java - 如何使用数据存储 api 使用父实体键获取嵌套子实体

language-agnostic - 与语言无关的网络应用教程或书籍

c++ - 保存复杂的脚本对象的状态

python - 如何在 python 中处理损坏的管道(SIGPIPE)?

python - 如何使用 django 自动创建 uuid 列

google-app-engine - 使用哪个区域的 Google 云服务来降低成本和延迟

Python django 如何正确测试查询集是否返回结果

Python 断言 NDB 项相等

javascript - 如何在我们的网络应用程序中创建我们自己的通知(例如 Facebook)

eclipse - 我需要 JDK 才能与 Eclipse Helios 和 Tomcat 7.0.33 一起使用吗?