创建一个python项目

第一步:打开pytharm

第二步:创建pure python 类型的项目

第三步:创建项目完成之后选择之前创建的py3_flack 作为虚拟环境

第四步:路径可以通过在制定虚拟环境下,输入which   python 获得

例如:

新建文件:helloworld.py

导入Flask类:   from flask import Flask

Flask函数接收一个参数__name__ ,它会指向程序所在的包:     app = Flask(__name__)

装饰器的作用是将路由映射到视图函数 index:

@app.route("/")
def index():
  return "hello"
 
Flask应用程序实例的run方法启动WEB服务器
if __name__ == "__main__":
#port修改端口号,flask默认端口号是5000,debug测试改变,默认Flast
app.run(debug=True,port=5001)
 
路由基本定义
 
 
(1)制定路由地址
#使用flask路由器,指定网址和控制器
#制定访问路径为  /
@app.route("/")
def index():
  return "hello"
 
 
(2)有时我们需要将同一类url映射到同一个视图函数上,所以我们需要给路由传参
#给网址增加参数功能使用<变量名称>,路由方法要和 路由器定义的参数同步
 
【1】传递单个参数
@app.route("/hello/<id>")
def hello(id):
  return "你好,你的参数是: %s" % id
 
【2】传递多个参数
@app.route("/hello/<id>/<name>")
def hello(id,name):
  return "你好,你的参数是: %s,%s" % (id,name)
 
【3】 路由传递的参数默认当作str处理,也可以设定参数的类型
@app.route("/hello/<int:id>")

def hello(id):
  return "你好,你的参数是: %s" % id
 
小总结:
因为尖括号中的内容是动态的,所以尖括号中 在这里指定参数的类型,实际上是int代表integerConverter 去处理url传递的参数
 
 视图常用逻辑
 
1.返回json
 在使用Flask写接口时需要给客户端返回一个json数据,在Flask中可以指接使用jsonify生成一个JSON响应
 
例:
#使用jsonify模块来让网址直接显示json数据
@app.route("/json")
def re_json():
#定义好数据格式
  json_dict = {'id':10,'title':'flask的应用','countent':'flask的json格式化'}
#使用jsonify将定义好的数据转换成json格式,并返回给前端
  return jsonify(json_dict)
 
 在使用jsonify模块时,显示内容可能出现编码问题解决方案如下:
 
(1)在代码中,插入数据
#解决中文乱码问题,
app.config['JSON_AS_ASCII'] = False
#开启debug模式
app.config['DEBUE'] = True
 
(2)从配置文件里面加载配置
步骤:
1.在当前文件下创建一个文件,例如:config.ini
2.在新文件中写入   DEBUG = True      ,JSON_AS_ASCII = False  #代码必须大写
3.在写代码的文件中写入 : app.config.from_pyfile('config.ini')
小建议:
不推荐直接使用json.dumps转成JSON字符串返回,因为返回的数据要符合HTTP协议规范。
 
 (3) 建立一个配置类从配置中加载配置
# class Config(object):
# DEBUG = True
# TSON_AS_ASCII = False
app.config.from_object(Config)
(4)

从环境变量中加载
app.config.from_envvar("app_config")
2.重定向
 
 重定向可以:
自己的视图函数;可以直接填写自己的url路径;也可以使用url_for生成指定试图所对应的url
 
例:
(1)
#直接填写自己的url路径
@app.route('/123')
def reurl():
return redirect("http://music.163.com/")
 
 (2)自己的视图函数

@app.route('/demo')
def demo():
return 'demo'
 
 
(3)使用url_for生成指定试图所对应的url
@app.route('/demo')
def demo():
return redirect(url("demo1"),user_id = 100)
 
 异常捕获
统一对状态码进行捕获
@app.errorhandler(405)
def internal_sever_error(e):
return "这个接口不能用get请求,只能用post请求"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

python三大框架之一flask应用的更多相关文章

  1. python 三大框架之一Flask入门

    Flask轻量级框架,Flask是python中的轻量级框架. 打开终端 输入pip install Flask 命令 下载以及安装Flask框架 检查是否下载成功及能否使用 首先导入python环境 ...

  2. python三大框架之一flask中cookie和session的相关操作

    状态保持 Cookie cookie 是指某些网站为了 辨别  用户身份,进行会话跟踪而储存在用户本地的数据(通常会经过加密),复数形式是 coolies. cookie是由服务器端生成,发送给客户端 ...

  3. python三大框架之一(flask介绍)

    Flask , Django,  Tornado 是python中常用的框架,也是python的三大框架.它们的区别是:Flask: 轻量级框架: Django:重量级框架: Tornado:性能最好 ...

  4. Python Web框架 bottle flask

    Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. 1 2 3 4 pip instal ...

  5. Python WEB框架之Flask

    前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form.Admin.分页.中间件.信号.缓存.ContenType....): Tornado: ...

  6. Python Webk框架学习 Flask

    Flask是一个使用Python编写的轻量级Web应用框架.基于Werkzeug WSGI工具箱和Jinja2 模板引擎. Flask使用BSD授权.Flask也被称为“microframework” ...

  7. web 框架本质 及python三大框架对比

    . 导入Bootstrap.css (开发版3.3.7) . 还要Bootstrap.js,并且还要引入jQuery(). . 栅格系统 . container,row必须包含在container中 ...

  8. python 三大框架之一Django入门

    Django 是从真实世界的应用中成长起来的,它是由 堪萨斯(Kansas)州 Lawrence 城中的一个 网络开发小组编写的. 它诞生于 2003 年秋天,那时 Lawrence Journal- ...

  9. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

随机推荐

  1. windows配置教程

    1.卸载预装软件 2.卸载非安装的预装软件 有些软件被改成了“绿色版”软件不能通过软件列表卸载,一般在C:\Program Files (x86)目录下 可以直接删除其文件夹,如果提示文件夹无法删除则 ...

  2. mac 安装Seaslog扩展及SeasLogger应用

    首先下载 http://pecl.php.net/package/SeasLog 下载最新解压 cd /SeasLog-2.0.2/SeasLog-2.0.2/ phpize ./configure ...

  3. ID基本操作(创建主页,复制主页,把主页应用到多个页面)5.11

    主页上的对象将会显示在应用在这个主页上的所有页面. 一.创建主页的方法: 1.页面面板,右上方点击,可以新建主页..前缀:用来识别页面面板中的各个页面所应用的主页.最多可输入四个字符.名称:输入主页跨 ...

  4. UVA LA 3983 - Robotruck DP,优先队列 难度: 2

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  5. C++基础知识:操作符重载

    1.C++标准库: C++标准库并不是C++语言的一部分C++标准库是由C++语言编写而成的类库和函数的集合C++标准库中定义的类和对象都位于std命名空间中C++标准库的头文件都不带.h后缀C++标 ...

  6. CreateThread和_beginthread区别及使用

    CreateThread 是一个Win 32API 函数, _beginthread 是一个CRT(C Run-Time)函数, 他们都是实现多线城的创建的函数,而且他们拥有相同的使用方法,相同的参数 ...

  7. git相关知识点

    git add 和 git stage 有什么区别: 工作区(Working Directory).暂存区(Stage)和历史记录区(History)以及转换关系不能少: git stage 是 gi ...

  8. Qt 查询字符串数据

    (1)函数QString::startsWith(),判断某一个字符串是否以某个字符串开头:该函数具有两个参数,第一个参数制定了一个字符串,第二个参数指定是否大小写敏感,默认大小写敏感: eg: QS ...

  9. android 8.0 intent安装apk失败屏幕闪过

    需要做两处设置: 1.android8.0要加一条权限: <uses-permission android:name="android.permission.REQUEST_INSTA ...

  10. 解决MySQL不允许远程连接的问题

    进入MySQL:mysql  -u  root  -p mysql> GRANT ALL privileges ON *.* TO 'root' @'localhost' IDENTIFIED ...