flask学习 一

这篇博客介绍了如何开始使用Flask,包括安装、创建简单程序、理解变量规则、调试模式以及如何构造URL和处理HTTP方法。通过实例展示了如何在Python中搭建一个本地Web服务器并实现动态URL和HTTP请求响应。

安装flask

pip install flask

简单flask程序

from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'hello world'
if __name__ == '__main__':
    # app.debug = True
    app.run()

运行后访问 http://127.0.0.1:5000/ ,你会看见 Hello World 问候。

注释

app = Flask(__name__)

第一个参数是应用模块或者包的名称。 如果你使用单一的模块(如本例),你应该使用 __name__ ,因为模块的名称将会因其作为单独应用启动还是作为模块导入而有不同( 也即是 '__main__' 或实际的导入名)。这是必须的,这样 Flask 才知道到哪去找模板、静态文件等等。

@app.route('/')

使用 route() 装饰器告诉 Flask 什么样的URL 能触发我们的函数。类似于Java的注解

@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

最后我们用 run() 函数来让应用运行在本地服务器上。

调试模式

不需要重新运行就可以看到修改代码后的结果。

app.debug = True
app.run()

app.run(debug=True)

构造URL

在Web程序中常常需要获取某个页面的URL,在Flask中需要使用url_for('方法名')来构造对应方法的URL。它接受函数名作为第一个参数,也接受对应 URL 规则的变量部分的命名参数。未知变量部分会添加到 URL 末尾作为查询参数。下面是Flask官方的例子。

from flask import Flask,url_for
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'hello world'
@app.route('/index')
def index():
    pass
@app.route('/login')
def login():
    pass
@app.route('/user/<username>')
def profile(username):
    pass
if __name__ == '__main__':
    with app.test_request_context():
        print(url_for('index'))
        print(url_for('login'))
        print(url_for('login',next='abc'))
        print(url_for('profile',username='tom'))

输出结果如下:

/index
/login
/login?next=abc
/user/tom

HTTP方法

如果需要处理具体的HTTP方法,在Flask中也很容易,使用route装饰器的methods参数设置即可。

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        do_the_login()
    else:
        show_the_login_form()






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值