Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“生产什么?”;405“不允许使用方法”;在这个python代码中(google应用程序引擎)?_Python_Html_Google App Engine - Fatal编程技术网

“生产什么?”;405“不允许使用方法”;在这个python代码中(google应用程序引擎)?

“生产什么?”;405“不允许使用方法”;在这个python代码中(google应用程序引擎)?,python,html,google-app-engine,Python,Html,Google App Engine,我是一个python新手,我正在尝试一步一步地复制我之前在课堂上教过的应用程序,但是我得到了“405方法不允许”错误 下面是这位教授所做的: 以下是我所做的: 有人能告诉我下面的代码中是什么导致了这个错误“405方法不允许”?我看不出我所做的和教授所教的有什么区别。 缩进也正常(这里是main.py文件) 提前感谢您的帮助 这是我的代码: form= """ <html> <head> <title>Unit 2 Rot 13</ti

我是一个python新手,我正在尝试一步一步地复制我之前在课堂上教过的应用程序,但是我得到了“405方法不允许”错误

下面是这位教授所做的:

以下是我所做的:

有人能告诉我下面的代码中是什么导致了这个错误“405方法不允许”?我看不出我所做的和教授所教的有什么区别。 缩进也正常(这里是main.py文件)

提前感谢您的帮助

这是我的代码:

form= """
  <html>
  <head>
    <title>Unit 2 Rot 13</title>
  </head>

  <body>
    <h2>Enter some text to ROT13:</h2>
    <form method="post" action="/rot13">
      <textarea name="text"
                style="height: 100px; width: 400px;"></textarea>
      <br>
      <input type="submit">
    </form>
  </body>

  </html> """

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.out.write(form)

class Rot13Handler(webapp2.RequestHandler):
    def post(self):
        text = self.request.get("text")
        self.response.out.write(text)

app = webapp2.WSGIApplication([('/', MainHandler), ('/rot13', Rot13Handler)],
                          debug=True)
form=”“”
第二单元13
输入一些文本以执行以下操作:

""" 类MainHandler(webapp2.RequestHandler): def get(自我): 自我.回应.输出.写入(表格) 类Rot13Handler(webapp2.RequestHandler): def post(自我): text=self.request.get(“text”) self.response.out.write(文本) app=webapp2.WSGIApplication([('/',MainHandler),('/rot13',Rot13Handler)], debug=True)
代码正确,工作正常。您需要到别处寻找405错误的解释

编辑

你公布你的实际代码了吗?当您单击提交时,下面的代码将为您提供405方法不允许的错误。它有一个微妙的错误…:)

编辑(谢谢,@Nick Johnson)

如果上述操作都没有,请考虑从零开始,检查您的GAE设置。

  • main.py
    模块旁边是否有有效的
    app.yaml
    文件
  • 您是否能够在标准的Google AppEngine安装中运行留言簿演示应用程序
  • 如果没有,则发布错误消息(如果有),以及运行它的系统的详细信息
  • 如果您能够运行留言簿,您是否可以尝试通过编辑该留言簿来重建应用程序?我发现这在过去对我很有效

  • 我只是在Udacity的在线课程之后尝试Python,遇到了类似的问题,AppEngine无法找到post方法

    最后发现根本原因是缩进


    我使用Notepad++作为小项目的编辑器,但它无法工作,继续抛出405错误。然后我将代码复制并粘贴到安装了Python插件的Netbean IDE,IDE显示是错误的缩进使POST方法成为GET方法的内部方法,这在Notepad++中找不到,尽管看起来缩进处理得很好。

    也有同样的问题。这个问题再次被讨论。定义时:

    def post(self):
    

    如果我使用“tab”进行缩进,它就不起作用了。当我使用空格时,它确实是。错误日志没有显示任何内容。为了避免这样的问题,您可以使用python IDE,如Wing IDE。

    使用记事本++时遇到同样的问题。我花了好几天的时间才弄明白到底出了什么问题,直到我读到这篇文章。切换到使用Python空闲。工作起来很有魅力。我将回应@Aris,并说使用“传统”Python IDE是最好的方式

    我对记事本++也有同样的问题。我对Python IDLE所做的唯一更改是用一个选项卡替换一些空格,效果很好:)

    我的代码也有同样的问题,当我重新排列处理程序的顺序时,问题得到了解决。检查了几个不同的SO答案,检查处理程序定义和缩进中的错误,最后在查看处理程序的顺序时将其修复。

    在我的情况下,当我尝试进行post调用时:我得到了405方法不允许

    @app.route("/test")
    def test():
        print('inside test')
        if request.method == 'POST':
        # some code
        res = json.dumps({ 'success': True, 'message': db_res }), 200, headers
        return res
    
    我错过的地方:

    方法=['POST']


    然后它对我有效

    如果您尝试切换顺序:
    webapp2.WSGIApplication(('/rot13',Rot13Handler),[('/',MainHandler)])
    这段代码工作正常。我只是复制粘贴了它,得到了正确的结果。@IgnacioVazquez Abrams不,没有这样的事情。如果你定义了一个post函数,它是启用的,否则它是不允许的。谢谢你的关注,@gauden。是的,这是我的实际代码,但我将按照你的建议发布结果。你最初的建议都与指针的405.+1无关。我仍然认为重新检查一个人的系统是有用的,因为它可以帮助我调试和初步了解一个系统,当然不是因为具体的错误消息。
    def post(self):
    
    @app.route("/test")
    def test():
        print('inside test')
        if request.method == 'POST':
        # some code
        res = json.dumps({ 'success': True, 'message': db_res }), 200, headers
        return res
    
    @app.route("/test" , methods=['POST'])