“生产什么?”;405“不允许使用方法”;在这个python代码中(google应用程序引擎)?
我是一个python新手,我正在尝试一步一步地复制我之前在课堂上教过的应用程序,但是我得到了“405方法不允许”错误 下面是这位教授所做的: 以下是我所做的: 有人能告诉我下面的代码中是什么导致了这个错误“405方法不允许”?我看不出我所做的和教授所教的有什么区别。 缩进也正常(这里是main.py文件) 提前感谢您的帮助 这是我的代码:“生产什么?”;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
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
文件我只是在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'])