You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动