Skip to main content
 首页 » 编程设计

python之在 Flask 中调用不同 View 函数的相同 URL 模式

2025年05月04日9xiaohuochai

我有 URL 相关的问题。我有索引页面和项目页面(可以显示许多项目之一,具体取决于您作为参数传递的项目 key )。 我想要“漂亮”的网址,这样我就可以让 domainname.com/index 和 domainname.com/some_project_key 调用不同的 View 函数

@app.route('/') 
@app.route('/index') 
def index(): 
pass 
 
@app.route('/<path:projectkey>') 
def project(projectkey): 
pass 

这对我不起作用,因为如果我尝试转到索引页面,它将通过索引函数,但在返回模板之前,它还将运行项目函数,在该函数中它将对不存在的项目运行查询。 是否有一些内置解决方案或需要一些解决方法? 非常感谢我能得到的任何帮助。

请您参考如下方法:

如果您尝试从 Web 浏览器调用您的索引页面,请记住许多浏览器也会对同一域进行 GET 调用以检索您的网站图标。在我试图复制这个......

from flask import Flask 
 
app = Flask(__name__) 
 
@app.route('/') 
@app.route('/index') 
def index(): 
    print 'index' 
    return 'index' 
 
@app.route('/<path:projectkey>') 
def project(projectkey): 
    print 'project' 
    return 'project' 
 
app.run(debug=True) 

运行后,我命中了索引并收到...

index 
127.0.0.1 - - [14/Oct/2013 18:08:41] "GET / HTTP/1.1" 200 - 
project 
127.0.0.1 - - [14/Oct/2013 18:08:41] "GET /favicon.ico HTTP/1.1" 200 - 

换句话说,这是有效的。但是,“project”会被打印出来,因为浏览器将向 /favicon.ico 发出第二个 GET 请求。