Flask 快速入门

来源:互联网 发布:Java 获取项目发布路径 编辑:程序博客网 时间:2024/04/30 07:36

假设你已经安装了Flask,如果没有安装请参考 Flask开发环境配置

小程序

Flask小程序
“`
from flask import Flask
app = Flask(name)

@app.route(‘/’)
def hello_world():
return “Hello World!”

if name == ‘main‘:
app.run()
``
保存为hello.py,但是最好不要保存为flask.py,这样会和Flask本身有冲突
然后就可以再浏览器中输入
http://127.0.0.1:5000,就可以看到Hello World!`
分析一下上面这段代码:

  1. 引入Flask类
  2. 创建了一个Flask的实例
  3. 使用了一个装饰器,使得访问URL时,触发对应的方法
  4. 访问方法返回相关的内容
  5. 运行run方法
    停止 Server,使用 Ctrl-C

调试模式

上面的run()方法会启动一个本地的开发服务器,但是你每次修改代码之后,就需要重新启动这个服务器
这样的开发体验不是很好,Flask提供一个更好的方式,在开发时,我们可以使用调试模式,这样每次如果
有代码修改服务器就会自动重新加载,有两种方式打开调试模式
1. 设置对应的flag值为true

app.debug = True
app.run()

2. 在执行run方法时,传入相应的参数

app.run(debug=True)

这两种方式的效果是一样的

但是在部署的环境中,不建议使用开发者模式,这样看会有潜在的风险,可能会执行一些恶意代码

URL路由

现在的web应用都有很简洁漂亮的URL,这样的URL更便于人们记忆,尤其是在现在移动设备比较流行
的时代,这样更方便在移动端访问
在上面的代码中我们可以看到,使用了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/’)
def show_user_profile(username):
return ‘User %s’ % username

@app.route(‘/post/’)
def show_post(post_id):
return ‘Post %d’ % post_id
“`
转换器包括:

类型 描述 string (默认) 文本不接受斜线 int int型数字 float 浮点型数字 path 文本可以包含斜线 any uuid uuid文本

URL唯一/重定向行为
Flask的URL的规则是基于Werkzeug的路由规则,受到Apache和早期HTTP Server的影响

“`
@app.route(‘/projects/’)
def projects():
return ‘The project page’

@app.route(‘/about’)
def about():
return ‘about page’
“`
中两个路由看起来没有太大区别,第一个路由结尾有/,第二个路由结尾没有/,在访问时会有什么影响呢
第一种情况,如果访问时没有结尾的/,Flask会重定向到对应的有/的方法
第二种情况,如果访问时结尾带/,那么就会报404 ‘Not Fount’的错误

HTTP方法

HTTP协议有不同的方法供URL访问,默认提供是GET方法,但是可以在路由中通过参数来改变

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

这个login方法,两种方式都可以访问

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE
  • OPTIONS

静态文件

在动态网页中也需要静态文件,通常是CSS和JavaScript文件,在Flask中只需创建一个 static
的文件夹,然后将文件放进去即可,可以使用下面的方法生成静态文件的路由

url_for('static',filename='style.css')

渲染模板

开发人员是不希望通过python来写HTML文件的,这样太繁琐了,在Flask中提供了Jinja2的引擎来
渲染HTML模板
渲染模板只需要 render_template()方法即可,你只需要将需要渲染的文件名传入即可
“`
from flask import render_template

@app.route(‘/hello/’)
@app.route(‘/hello/’)
def hello(name=None):
return render_template(‘hello.html’,name=name)
“`
Flask会在templates文件夹中对应的文件,两种情况的文件的分布如下:
1. moudle

2.package

访问请求数据

Context

Request对象

文件上传

Cookies

重定向和错误

关于响应

会话

Message Flashing

日志

WSGI中间件

部署

0 0
原创粉丝点击