Flask框架快速入门学习(1)

Flask框架适用于python语言,很好的web开发框架

一个最小的应用

  这里用一个简单的网站应用来展示flask的使用方法:

# -*- encoding = UTF-8
from flask import Flask

app = Flask(__name__)

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

@app.route('/user/<username>')
def show_user_profile(username):
    return 'User %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
    return 'Post %d' % post_id

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

代码运行结果展示:


可以看到在本地端服务器已经跑起来了,同时通过浏览器访问 http://127.0.0.1:5000/会得到:

 

访问http://127.0.0.1:5000/ user/sunbowl 会得到:


访问http://127.0.0.1:5000/post/123 会得到:


在这个小的应用里,值得注意的是路由的使用,即@app.route()。这个路由便是之前说的装饰器,也就是说flask通过装饰器来识别用户需要访问的网址路径,并在对应的网址路径里做对应的应用。

这里的路由对应着浏览器访问的路径,如果路由的后面不加‘/’,这个便涉及到一个叫URL重定向的问题。也就是说对于 ‘/projects/’这样的。用户在访问网址的时候如果没有加上‘/’,系统会自动添加并访问,但是如果没有定义‘/’,用户访问带‘/’的便会出现错误,这样也保证了URL的唯一性。

例子:

# -*- encoding = UTF-8
from flask import Flask

app = Flask(__name__)

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

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

运行结果展示:


没有加上‘/’的例子:

# -*- encoding = UTF-8
from flask import Flask

app = Flask(__name__)

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

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

很显然,url的地址是可以被唯一确定的

优化构造,创建URL

为什么不在初始化的时候直接赋值url呢,那还不是因为当网站越来越大的时候,url多了的情况下,单一的去一个个修改url是一件很麻烦的事情,因此可以通过创建URL的方法,在同一个地方对所有的url进行复制修改,将省很多事。

例子:

# -*- encoding = UTF-8
from flask import Flask,url_for

app = Flask(__name__)

@app.route('/')
def index():
    pass

@app.route('/login')
def login():
    pass

@app.route('/user/<username>')
def profile(username):
    pass

with app.test_request_context():
    print url_for('index')
    print url_for('login')
    print url_for('login',next='/')
    print url_for('profile',username='sunbowl')

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

HTTP方法

主要使用的是GET和POST。GET的意思就是说浏览器向服务器说,我只需要数据,你把数据发给我就行了。POST的意思就是说浏览器想要在URL上发数据,便会请求服务器,服务器必须确保数据已储存并且只储存一次。

此外还有HEAD、PUT、DELETE\OPTION

例子:

# -*- encoding = UTF-8
from flask import Flask, request

app = Flask(__name__)


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


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

运行情况:


明显是请求数据,所以返回的是get






阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页