Flask简单入门

准备工作

  • 开始flask项目的步骤:
1. 安装python环境

2. 检验python和pip是否安装好

3. 新建项目目录

4. 安装virtualenv

5. 使用pipenv,这样可省略第4步

6. 启动pipenv

7. 安装各种包,比如flask

建议使用官方推荐的pipenv工具来创建虚拟环境,该虚拟环境和项目绑定。

  • 进行安装:

在Windows命令行下(在Linux下也适用),

cd Desktop

mkdir fisher                #创建项目目录

cd fisher

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pipenv              #安装pipenv

Windows下

pipenv install              #创建虚拟环境

pipenv shell                #进入虚拟环境

pipenv install -i https://pypi.mirrors.ustc.edu.cn/simple  flask                #安装flask

flask               #验证,未报错则安装成功

Linux下

# echo 'PATH=$PATH:/usr/python/bin' >> /etc/profile && source /etc/profile

# pipenv install

# pipenv shell

# pipenv install -i https://pypi.mirrors.ustc.edu.cn/simple  flask

# flask

pip或pipenv安装慢时可换成国内源:

阿里云:http://mirrors.aliyun.com/pypi/simple
豆瓣:http://pypi.douban.com/simple
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple
中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple

linux下永久修改

# mkdir ~/.pip

# vim ~/.pip/pip.conf 

[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple/

[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
  • pipenv常用命令:
exit                #退出虚拟环境

pipenv              #进入虚拟环境

pipenv install              #安装包

pipenv uninstall                #卸载包

pipenv graph                #查看已安装包的依赖关系
  • 开发工具选择:
1. Pycharm(VS Code)

2. Xampp(MySQL)

3. Navicat(数据库可视化管理工具)

flask最小原型与唯一URL原则

使用PyCharm,将之前桌面创建的fisher目录作为项目路径,打开文件设置项目: fisherProject Interpreter,可在命令行下通过pipenv --venv查询,设置与之对应的Project Interpreter。

  • 创建flask入口文件fisher.py

flask最小原型

from flask import Flask

app = Flask(__name__)

@app.route('/hello/')                #路由注册
def hello():
    return 'Hello, World!'

app.run()

命令行运行

python fisher.py

打开浏览器,访问127.0.0.1:5000/hello

在这里插入图片描述

此时发生了重定向,从127.0.0.1:5000/hello重定向到127.0.0.1:5000/hello/,这保证了唯一URL原则。


路由的另一种注册方式

  • 开启调试模式:

为了避免在修改代码后频繁重启服务器,所以需要开启调试模式,调试模式不要在生产模式下开启。

from flask import Flask

app = Flask(__name__)

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

app.run(debug=True)             #开启调试模式

命令行运行

python fisher.py
  • 另一种方式注册路由:
from flask import Flask

app = Flask(__name__)

def hello():
    return 'Hello, World!'

app.add_url_rule('/hello/', view_func=hello)

app.run(debug=True)

一般情况建议使用装饰器方式注册路由,更为简洁优雅;在基于类的视图(即插视图)时使用app.add_url_rule()方式注册路由。


app.run相关参数与flask配置文件

  • 接受所有地址访问:
from flask import Flask

app = Flask(__name__)

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

app.run(host='0.0.0.0', debug=True)

此时,可以通过外网地址进行访问,下面通过本机ip进行访问

在这里插入图片描述

  • 更改端口:
from flask import Flask

app = Flask(__name__)

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

app.run(host='0.0.0.0', port=81 debug=True)

此时,就只能通过81端口进行访问了

在这里插入图片描述

  • 创建flask配置文件config.py
DEBUG = True                #常量应该大写

配置文件中的所有参数必须全部大写。

from flask import Flask

app = Flask(__name__)
app.config.from_object('config')                #导入配置文件

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

app.run(host='0.0.0.0', port=81, debug=app.config['DEBUG'])

if __name__的作用:

from flask import Flask

app = Flask(__name__)
app.config.from_object('config')

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

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=81, debug=app.config['DEBUG'])

if __name__ == '__main__'保证if下面的执行语句只在入口文件中执行。

而且在生产环境下,web服务器通常是由nginx+uwsgi组成的,fisher.py只是被uwsgi作为一个模块导入的,所以不应该再启动flask内置的web服务器。


响应对象:Response

Response对象是flask中默认使用的响应对象。

  • 手动创建response对象:
from flask import Flask,make_response

app = Flask(__name__)
app.config.from_object('config')

@app.route('/hello/')
def hello():
    headers = {
        'content-type': 'text/plain'                #指定客户端以text格式解析返回内容
    }
    response = make_response('<html></html>', 404)
    response.headers = headers
    return response

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=81, debug=app.config['DEBUG'])

浏览器访问

在这里插入图片描述

可以看到,访问到文本形式的<html></html>,而且状态码为404,这说明状态码不影响访问返回的内容,只是作为一个标识。

  • 自动创建response对象:
from flask import Flask,make_response

app = Flask(__name__)
app.config.from_object('config')

@app.route('/hello/')
def hello():
    headers = {
        'content-type': 'application/json',
        'location': 'http://www.baidu.com'
    }

    return '<html></html>', 301, headers

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=81, debug=app.config['DEBUG'])

浏览器访问

在这里插入图片描述

可以看到,直接重定向到了百度首页。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值