Google App Engine数据库假数据创建异常:请求未进入createDummy处理类
可能导致请求未进入
createDummy类的原因分析 让我帮你梳理一下问题所在,结合你给出的代码和场景,常见的触发原因主要有这几个:
请求方法不匹配
你的createDummy类只实现了post()方法,这意味着它只会响应POST类型的请求。如果你的请求是GET方式(比如直接在浏览器地址栏输入/dummy,或者表单提交时用了method="get"),webapp2找不到对应的处理方法,自然不会进入这个类。如果是通过表单提交数据,一定要确保表单的method属性设置为post,并且action属性指向/dummy。请求目标URL错误
检查你发起请求的目标地址是不是真的是/dummy。比如如果表单的action写错成了/,那请求会直接匹配到根路径的MainPage路由。另外要注意URL的大小写——虽然大部分服务器不区分大小写,但最好保证请求路径和路由定义完全一致。服务器未重启或缓存问题
如果你是修改路由规则后没有重启webapp2服务器,有时候debug模式的热重载可能没生效,导致新的路由规则没被加载。这种情况下重启服务器就能解决问题。类定义或路由注册的低级错误
再仔细核对一下代码细节:- 确认
createDummy类确实正确继承了webapp2.RequestHandler - 路由注册时用的是类本身
createDummy,而不是类的实例(比如写成createDummy()就会出错) - 检查有没有拼写错误,比如类名或者路由路径的拼写不一致
- 确认
如果以上排查都没问题,可以给createDummy临时加一个get()方法做测试:
class createDummy(webapp2.RequestHandler): def get(self): self.response.write("成功进入createDummy的GET方法!") def post(self): print("Hi! Let's post some data to db") book1 = BooksPost(bookname="abcd", authorname="xyz") book1.put() self.redirect('/')
然后直接在浏览器访问/dummy,如果能看到输出,说明路由本身是正常的,问题出在POST请求的发送方式上。
内容的提问来源于stack exchange,提问作者Nidhi Gupta




