我已经尝试了好几个小时了,一定有一个简单的方法来检索 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/