python Flask学习

一个最小的应用

文档中,Flask一般是用python2写的,因此这习用python2粗略学习和了解Flask框架

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

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

把它保存为 hello.py (或是类似的),然后用 Python 解释器来运行。 确保你的应用文件名不是 flask.py ,因为这将与 Flask 本身冲突

 

 

 

 相当于启动了一个web server

 

路由

 route() 装饰器把一个函数绑定到对应的 URL 上。很好理解,就是定义用户再访问某些网站路径时候设置一个函数返回某些特定的会应。

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello World'

 

变量规则

这个规则可以用来创建动态的URL

要给 URL 添加变量部分,你可以把这些特殊的字段标记为 <variable_name> , 这个部分将会作为命名参数传递到你的函数。规则可以用 <converter:variable_name> 指定一个可选的转换器。这里有一些不错的例子:

@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'
@app.route('/admin/<name>')
def admin_login(name):
    if name=='admin_login':
        return 'welcome to my world'
if __name__ == '__main__':
    app.run()

 

 

 

如果路径正确的话,就返回welcome to my world

 

如果上层目录正确的话,下层目录不正确,会返回500,无权限

当用<int:xx>接受时,如果用浮点数的话,回直接返回404

 

 

唯一 URL / 重定向行为

Flask 的 URL 规则基于 Werkzeug 的路由模块。这个模块背后的思想是基于 Apache 以及更早的 HTTP 服务器主张的先例,保证优雅且唯一的 URL。

以这两个规则为例:

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

虽然它们看起来着实相似,但它们结尾斜线的使用在 URL 定义 中不同。 第一种情况中,指向 projects 的规范 URL 尾端有一个斜线。这种感觉很像在文件系统中的文件夹。访问一个结尾不带斜线的 URL 会被 Flask 重定向到带斜线的规范 URL 去。

然而,第二种情况的 URL 结尾不带斜线,类似 UNIX-like 系统下的文件的路径名。访问结尾带斜线的 URL 会产生一个 404 “Not Found” 错误。

这个行为使得在遗忘尾斜线时,允许关联的 URL 接任工作,与 Apache 和其它的服务器的行为并无二异。此外,也保证了 URL 的唯一,有助于避免搜索引擎索引同一个页面两次。

意思是第一种不管你访问/projects还是/projects/都可以访问到,/projects会自动重定向到/projects/

 

第二种的话如果要访问,必须带斜线,如果不带斜线,就会返回404。

构造 URL

 

posted @ 2019-09-17 17:01  yunying  阅读(230)  评论(0)    收藏  举报