2013-02-19 124 views
3

当我作为URL类型/login,就会出问题无法路由到“/登录”与烧瓶?

例如:

from flask import Flask ,url_for,render_template,request 
app = Flask(__name__) 

@app.route('/login') 
def index(): 
    return "index" 

if __name__== "__main__": 
    app.run() 

错误变成是这样的:

Not Found. 
The requested URL was not found on the server. 

当我与/login/替换/login或任何其他字如/log,都会没事的。这是如何发生的?

+1

运行您的示例并访问http://127.0.0.1:5000/login对我来说工作得很好......在控制台上显示的内容是什么? – pcalcao 2013-02-19 11:47:23

+0

“未找到 在服务器上找不到请求的网址 如果您手动输入网址,请检查拼写并重试。 – winoi 2013-02-19 12:03:15

+1

这就是你的浏览器上显示的内容,对吧?日志怎么样?例如:'127.0.0.1 - - [19/Feb/2013 11:46:47]“GET/login HTTP/1.1”200 -' – pcalcao 2013-02-19 12:04:33

回答

5
+0

但为什么它会自动将“/ login”替换为“/ login /”?然后浏览器将无法找到该页面。 – winoi 2013-02-19 14:11:05

+0

请阅读flask quickstart唯一URL /重定向行为部分,它解释了为什么瓶子会这样做。 – Joe 2013-02-19 14:18:01

+0

由于您提供的代码,我可以访问'http://127.0.0.1:5000/login',它不会重定向到'http://127.0.0.1:5000/login /';当我尝试访问'http://127.0.0.1:5000/login /'时,它会报告404错误。它符合唯一URL /重定向行为。 – Joe 2013-02-19 14:40:06

0

编辑

你可以turn off the strict url mode路由模块中,得到/login/要求工作

添加以下代码在你app = Flask(__name__)之后,并在你定义任何路由之前。

app.url_map.strict_slashes = False 

原来的答案

我的铬是某种搞乱请求。我打开<F12>开发人员工具,发现它会自动将我的/login请求重定向到/login/

General 
Request URL:http://roxma.org:8000/hello 
Request Method:GET 
Status Code:301 MOVED PERMANENTLY (from disk cache) 
Remote Address:127.0.0.1:1080 

Request 
Content-Length:263 
Content-Type:text/html; charset=utf-8 
Date:Wed, 28 Dec 2016 14:24:44 GMT 
Location:http://roxma.org:8000/hello/ 
Server:Werkzeug/0.11.11 Python/3.5.1 

这很尴尬。我不知道如何解决这个问题。我想最好的解决方案是使用/login/风格。