错误 405 方法不允许,redirect(url_for('index'))
Posted
技术标签:
【中文标题】错误 405 方法不允许,redirect(url_for(\'index\'))【英文标题】:Error 405 Method Not Allowed, redirect(url_for('index'))错误 405 方法不允许,redirect(url_for('index')) 【发布时间】:2018-07-26 07:02:59 【问题描述】:我目前正在将 pythonanywhere 用于学校项目。以下是我遇到问题的一段代码。
#When at www.example.com/ load "log_in.html" file
@app.route("/", methods=["GET"])
def index():
if request.method == "GET":
return render_template("log_in.html")
#When at www.example.com/create_account/
@app.route("/create_account", methods=["GET", "POST"])
def create_account():
if request.method == "GET":
return render_template("create_account.html", username = username, password = password)
return redirect(url_for('index'))
用户点击按钮并提交详细信息以创建帐户的意图是什么。数据被记录后,会被重定向回'index'下的登录页面。
在测试代码后,一切正常,直到重定向部分给我一个错误 405,方法不允许。
该网站位于http://fishypower.pythonanywhere.com/create_account 单击“创建帐户”按钮将给出错误 405
下面是http://fishypower.pythonanywhere.com/create_account的代码
<html>
<head>
<title>ElderMinder: Create Account</title>
</head>
<body>
<div>
<form action="." method="POST">
<center><textarea name="username" placeholder="Enter your username"></textarea></center>
<div></div>
<center><textarea name="password" placeholder="Enter your password"></textarea></center>
<div></div>
<center><input type="submit" value="Create Account"></center>
</form>
</div>
</body>
</html>
【问题讨论】:
【参考方案1】:您正在使用<form action="." method="POST">
。您为什么决定使用句点作为行动目标?
该操作应该是空白的,或者只是将其保留以提交到它的当前 url 或 <form action=" url_for('create_account') " method="post">
是明确的。
因此,简而言之,您会收到错误消息,因为您的表单提交将发送至 /
,而该视图仅接受 GET 请求。
【讨论】:
以上是完全正确的,但只是稍微扩展一下:如果您在页面“fishypower.pythonanywhere.com/create_account”上,那么action="."
将提交到“fishypower.pythonanywhere.com”。但是如果你在页面“fishypower.pythonanywhere.com/create_account”(注意尾部的斜杠)那么action="."
会提交给“fishypower.pythonanywhere.com/create_account”这个“。”与在 Unix 文件路径中的含义相同——当前“目录”。
感谢您的帮助。由于我最近才开始,我的编码仍然主要是编辑样本以满足我的需要。我打算将数据发送到数据库进行存储。我需要对代码做些什么吗?以上是关于错误 405 方法不允许,redirect(url_for('index'))的主要内容,如果未能解决你的问题,请参考以下文章
python: urllib2.HTTPError: HTTP 错误 405: 方法不允许