上海网站建设觉策,上海自助建站费用,网站设计公司排名,找手工活外发加工去哪个平台前言: Flask框架和Django框架的区别#xff1a; Django框架#xff1a; 大而全#xff0c;内置的app的很多#xff0c;第三方app也很多Flask框架#xff1a; 小而精#xff0c;没有过多的内置app#xff0c;只能完成web框架的基本功能#xff0c;很多功能都需要借助第三…前言: Flask框架和Django框架的区别 Django框架 大而全内置的app的很多第三方app也很多Flask框架 小而精没有过多的内置app只能完成web框架的基本功能很多功能都需要借助第三方
拓展 python异步框架 fastapiFastAPIsanictornado目前很少人在使用django3.x以后版本支持异步 同步框架和异步框架的区别 同步框架 一个线程只会处理一个请求异步框架 一个线程可以处理多个请求异步框架可以显著的提高并发量
一、flask介绍
1、介绍
Flask是一个基于Python开发并且依赖于jinja2模板和Werkzeug WSGI服务的一个微型框架
jinja2
模板语法和django的dtl非常像
Werkzeug WSGI
符合wsgi协议的web服务器django使用的是wsgiref
2、使用两种协议编写web
使用wsgiref编写web
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pyspan stylecolor:#0000fffrom/span wsgirefspan stylecolor:#393a34./spansimple_server span stylecolor:#0000ffimport/span make_serverspan stylecolor:#0000ffdef/span span stylecolor:#393a34mya/spanspan stylecolor:#393a34(/spanenvironspan stylecolor:#393a34,/span start_responsespan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# request就是environ包装后的对象/em/spanspan stylecolor:#0000ffprint/spanspan stylecolor:#393a34(/spanenvironspan stylecolor:#393a34)/spanstart_responsespan stylecolor:#393a34(/spanspan stylecolor:#a31515200 OK/spanspan stylecolor:#393a34,/span span stylecolor:#393a34[/spanspan stylecolor:#393a34(/spanspan stylecolor:#a31515Content-Type/spanspan stylecolor:#393a34,/span span stylecolor:#a31515text/html/spanspan stylecolor:#393a34)/spanspan stylecolor:#393a34]/spanspan stylecolor:#393a34)/spanspan stylecolor:#008000em# 分发路由/em/spanspan stylecolor:#008000em# 根据用户访问的路由打开对应的html文件读取并返回给用户/em/spanspan stylecolor:#0000ffif/span environspan stylecolor:#393a34./spangetspan stylecolor:#393a34(/spanspan stylecolor:#a31515PATH_INFO/spanspan stylecolor:#393a34)/span span stylecolor:#393a34/span span stylecolor:#a31515/index/spanspan stylecolor:#393a34:/spanspan stylecolor:#0000ffwith/span openspan stylecolor:#393a34(/spanspan stylecolor:#a31515index.html/spanspan stylecolor:#393a34,/span span stylecolor:#a31515rb/spanspan stylecolor:#393a34)/span span stylecolor:#0000ffas/span fspan stylecolor:#393a34:/spandata span stylecolor:#393a34/span fspan stylecolor:#393a34./spanreadspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/spanspan stylecolor:#0000ffelif/span environspan stylecolor:#393a34./spangetspan stylecolor:#393a34(/spanspan stylecolor:#a31515PATH_INFO/spanspan stylecolor:#393a34)/span span stylecolor:#393a34/span span stylecolor:#a31515/login/spanspan stylecolor:#393a34:/spanspan stylecolor:#0000ffwith/span openspan stylecolor:#393a34(/spanspan stylecolor:#a31515login.html/spanspan stylecolor:#393a34,/span span stylecolor:#a31515rb/spanspan stylecolor:#393a34)/span span stylecolor:#0000ffas/span fspan stylecolor:#393a34:/spandata span stylecolor:#393a34/span fspan stylecolor:#393a34./spanreadspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/spanspan stylecolor:#0000ffelse/spanspan stylecolor:#393a34:/spandata span stylecolor:#393a34/span span stylecolor:#a31515bh1Hello Web!/h1/spanspan stylecolor:#0000ffreturn/span span stylecolor:#393a34[/spandataspan stylecolor:#393a34]/spanspan stylecolor:#0000ffif/span __name__ span stylecolor:#393a34/span span stylecolor:#a31515__main__/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 第一个参数是服务的IP不写默认为127.0.0.1第二个是监听的端口第三个是编写的web函数/em/spanmy_server span stylecolor:#393a34/span make_serverspan stylecolor:#393a34(/spanspan stylecolor:#a315150.0.0.0/spanspan stylecolor:#393a34,/span span stylecolor:#36acaa8008/spanspan stylecolor:#393a34,/span myaspan stylecolor:#393a34)/spanspan stylecolor:#008000em# 启动服务/em/spanmy_serverspan stylecolor:#393a34./spanserve_foreverspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/span
/code/span/span werkzeug WSGI编写服务
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# pip 安装werkzeug/em/span
span stylecolor:#008000em# 导入/em/span
span stylecolor:#0000fffrom/span werkzeugspan stylecolor:#393a34./spanwrappers span stylecolor:#0000ffimport/span Requestspan stylecolor:#393a34,/span Responsespan stylecolor:#393a34Requestspan stylecolor:#393a34./spanapplication/span
span stylecolor:#0000ffdef/span span stylecolor:#393a34my_server/spanspan stylecolor:#393a34(/spanrequestspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#0000ffprint/spanspan stylecolor:#393a34(/spanrequestspan stylecolor:#393a34)/spanspan stylecolor:#0000ffreturn/span Responsespan stylecolor:#393a34(/spanspan stylecolor:#a31515Hello Web!/spanspan stylecolor:#393a34)/spanspan stylecolor:#0000ffif/span __name__ span stylecolor:#393a34/span span stylecolor:#a31515__main__/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 导入启动服务的模块/em/spanspan stylecolor:#0000fffrom/span werkzeugspan stylecolor:#393a34./spanserving span stylecolor:#0000ffimport/span run_simplerun_simplespan stylecolor:#393a34(/spanspan stylecolor:#a31515127.0.0.1/spanspan stylecolor:#393a34,/span span stylecolor:#36acaa4000/spanspan stylecolor:#393a34,/span my_serverspan stylecolor:#393a34)/span
/code/span/span 二、flask快速使用
安装
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# 安装flask会一并安装其依赖jinja2、Werkzeug、MarkupSafe/em/spanpip install flask span stylecolor:#008000em# 版本问题/em/spanspan stylecolor:#393a34-/spanspan stylecolor:#36acaa1/spanspan stylecolor:#393a34./spanx 没有本质区别span stylecolor:#393a34-/spanspan stylecolor:#36acaa2/spanspan stylecolor:#393a34./spanx 没有本质区别源码上动了用起来一样
/code/span/span
1、快速使用
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# 导入模块/em/span
span stylecolor:#0000fffrom/span flask span stylecolor:#0000ffimport/span Flaskspan stylecolor:#008000em# 实例化对象参数内是服务的名字填入任意都可以/em/spanapp span stylecolor:#393a34/span Flaskspan stylecolor:#393a34(/span__name__span stylecolor:#393a34)/spanspan stylecolor:#008000em# 编写函数、注册路由装饰器方法注册/em/span
span stylecolor:#393a34appspan stylecolor:#393a34./spanroute/spanspan stylecolor:#393a34(/spanspan stylecolor:#a31515//spanspan stylecolor:#393a34)/span
span stylecolor:#0000ffdef/span span stylecolor:#393a34index/spanspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#0000ffreturn/span span stylecolor:#a31515hello web!/spanspan stylecolor:#393a34appspan stylecolor:#393a34./spanroute/spanspan stylecolor:#393a34(/spanspan stylecolor:#a31515/home/spanspan stylecolor:#393a34)/span
span stylecolor:#0000ffdef/span span stylecolor:#393a34home/spanspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#0000ffreturn/span span stylecolor:#a31515hello home!/spanspan stylecolor:#0000ffif/span __name__ span stylecolor:#393a34/span span stylecolor:#a31515__main__/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# app.run(127.0.0.1, 5000)/em/spanspan stylecolor:#008000em# 默认监听本地127.0.0.1的5000端口/em/spanappspan stylecolor:#393a34./spanrunspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/span
/code/span/span
2、使用flask编写登录小案例
2.1 login.html
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-htmlspan stylecolor:#008000emspan stylecolor:#393a34!/spanDOCTYPE htmlspan stylecolor:#393a34/span/em/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanhtml/span span stylecolor:#ff0000lang/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanenspan stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanhead/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanmeta/span span stylecolor:#ff0000charset/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanUTF-8span stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantitle/spanspan stylecolor:#393a34/span/spanTitlespan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantitle/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanhead/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanbody/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanform/span span stylecolor:#ff0000method/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanpostspan stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanp/spanspan stylecolor:#393a34/span/span用户名span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spaninput/span span stylecolor:#ff0000type/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spantextspan stylecolor:#393a34/span/span span stylecolor:#ff0000name/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanusernamespan stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanp/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanp/spanspan stylecolor:#393a34/span/span密码span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spaninput/span span stylecolor:#ff0000type/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanpasswordspan stylecolor:#393a34/span/span span stylecolor:#ff0000name/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanpasswordspan stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanp/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spaninput/span span stylecolor:#ff0000type/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spansubmitspan stylecolor:#393a34/span/span span stylecolor:#ff0000value/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/span登录span stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/span {{error}}
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanform/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanbody/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanhtml/spanspan stylecolor:#393a34/span/span
/code/span/span
2.2 home.html
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-htmlspan stylecolor:#008000emspan stylecolor:#393a34!/spanDOCTYPE htmlspan stylecolor:#393a34/span/em/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanhtml/span span stylecolor:#ff0000lang/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanenspan stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanhead/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanmeta/span span stylecolor:#ff0000charset/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanUTF-8span stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantitle/spanspan stylecolor:#393a34/span/spanTitlespan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantitle/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanhead/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanbody/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanh1/spanspan stylecolor:#393a34/span/span用户列表span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanh1/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantable/spanspan stylecolor:#393a34/span/span{% for k,v in user_dict.items() %}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantr/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantd/spanspan stylecolor:#393a34/span/span{{k}}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantd/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantd/spanspan stylecolor:#393a34/span/span{{v.name}}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantd/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantd/spanspan stylecolor:#393a34/span/span{{v[name]}}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantd/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantd/spanspan stylecolor:#393a34/span/span{{v.get(name)}}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantd/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantd/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spana/span span stylecolor:#ff0000href/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/span/detail/{{k}}span stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/span查看详细span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spana/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantd/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantr/spanspan stylecolor:#393a34/span/span{% endfor %}
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantable/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanbody/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanhtml/spanspan stylecolor:#393a34/span/span
/code/span/span
2.3 detail.html
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-htmlspan stylecolor:#008000emspan stylecolor:#393a34!/spanDOCTYPE htmlspan stylecolor:#393a34/span/em/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanhtml/span span stylecolor:#ff0000lang/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanenspan stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanhead/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanmeta/span span stylecolor:#ff0000charset/spanspan stylecolor:#0000ffspan stylecolor:#393a34/spanspan stylecolor:#393a34/spanUTF-8span stylecolor:#393a34/span/spanspan stylecolor:#393a34/span/spanspan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spantitle/spanspan stylecolor:#393a34/span/spanTitlespan stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spantitle/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanhead/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanbody/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanp/spanspan stylecolor:#393a34/span/span名字是{{user.name}}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanp/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanp/spanspan stylecolor:#393a34/span/span年龄是{{user[age]}}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanp/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanp/spanspan stylecolor:#393a34/span/span性别是{{user.get(gender)}}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanp/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34/spanp/spanspan stylecolor:#393a34/span/span{{user.text}}span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanp/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanbody/spanspan stylecolor:#393a34/span/span
span stylecolor:#800000span stylecolor:#800000span stylecolor:#393a34//spanhtml/spanspan stylecolor:#393a34/span/span
/code/span/span
2.4 py文件
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#0000fffrom/span flask span stylecolor:#0000ffimport/span Flaskspan stylecolor:#393a34,/span requestspan stylecolor:#393a34,/span render_templatespan stylecolor:#393a34,/span sessionspan stylecolor:#393a34,/span redirectapp span stylecolor:#393a34/span Flaskspan stylecolor:#393a34(/span__name__span stylecolor:#393a34)/spanspan stylecolor:#008000em# 使用session需要指定key/em/span
appspan stylecolor:#393a34./spansecret_key span stylecolor:#393a34/span span stylecolor:#a31515abc123/spanUSERS span stylecolor:#393a34/span span stylecolor:#393a34{/spanspan stylecolor:#36acaa1/spanspan stylecolor:#393a34:/span span stylecolor:#393a34{/spanspan stylecolor:#a31515name/spanspan stylecolor:#393a34:/span span stylecolor:#a31515张三/spanspan stylecolor:#393a34,/span span stylecolor:#a31515age/spanspan stylecolor:#393a34:/span span stylecolor:#36acaa18/spanspan stylecolor:#393a34,/span span stylecolor:#a31515gender/spanspan stylecolor:#393a34:/span span stylecolor:#a31515男/spanspan stylecolor:#393a34,/span span stylecolor:#a31515text/spanspan stylecolor:#393a34:/span span stylecolor:#a31515道路千万条/spanspan stylecolor:#393a34}/spanspan stylecolor:#393a34,/spanspan stylecolor:#36acaa2/spanspan stylecolor:#393a34:/span span stylecolor:#393a34{/spanspan stylecolor:#a31515name/spanspan stylecolor:#393a34:/span span stylecolor:#a31515李四/spanspan stylecolor:#393a34,/span span stylecolor:#a31515age/spanspan stylecolor:#393a34:/span span stylecolor:#36acaa28/spanspan stylecolor:#393a34,/span span stylecolor:#a31515gender/spanspan stylecolor:#393a34:/span span stylecolor:#a31515男/spanspan stylecolor:#393a34,/span span stylecolor:#a31515text/spanspan stylecolor:#393a34:/span span stylecolor:#a31515安全第一条/spanspan stylecolor:#393a34}/spanspan stylecolor:#393a34,/spanspan stylecolor:#36acaa3/spanspan stylecolor:#393a34:/span span stylecolor:#393a34{/spanspan stylecolor:#a31515name/spanspan stylecolor:#393a34:/span span stylecolor:#a31515王五/spanspan stylecolor:#393a34,/span span stylecolor:#a31515age/spanspan stylecolor:#393a34:/span span stylecolor:#36acaa18/spanspan stylecolor:#393a34,/span span stylecolor:#a31515gender/spanspan stylecolor:#393a34:/span span stylecolor:#a31515女/spanspan stylecolor:#393a34,/span span stylecolor:#a31515text/spanspan stylecolor:#393a34:/span span stylecolor:#a31515行车不规范/spanspan stylecolor:#393a34}/spanspan stylecolor:#393a34,/span
span stylecolor:#393a34}/spanspan stylecolor:#393a34appspan stylecolor:#393a34./spanroute/spanspan stylecolor:#393a34(/spanspan stylecolor:#a31515/login/spanspan stylecolor:#393a34,/span methodsspan stylecolor:#393a34/spanspan stylecolor:#393a34[/spanspan stylecolor:#a31515GET/spanspan stylecolor:#393a34,/span span stylecolor:#a31515POST/spanspan stylecolor:#393a34]/spanspan stylecolor:#393a34)/span
span stylecolor:#0000ffdef/span span stylecolor:#393a34index/spanspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 判断路由的方式/em/spanspan stylecolor:#0000ffif/span requestspan stylecolor:#393a34./spanmethod span stylecolor:#393a34/span span stylecolor:#a31515GET/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 返回登陆页面给用户/em/spanspan stylecolor:#0000ffreturn/span render_templatespan stylecolor:#393a34(/spanspan stylecolor:#a31515Login.html/spanspan stylecolor:#393a34)/spanspan stylecolor:#008000em# post请求判断用户名密码/em/spanspan stylecolor:#0000ffif/span requestspan stylecolor:#393a34./spanmethod span stylecolor:#393a34/span span stylecolor:#a31515POST/spanspan stylecolor:#393a34:/spanusername span stylecolor:#393a34/span requestspan stylecolor:#393a34./spanformspan stylecolor:#393a34./spangetspan stylecolor:#393a34(/spanspan stylecolor:#a31515username/spanspan stylecolor:#393a34)/spanpassword span stylecolor:#393a34/span requestspan stylecolor:#393a34./spanformspan stylecolor:#393a34./spangetspan stylecolor:#393a34(/spanspan stylecolor:#a31515password/spanspan stylecolor:#393a34)/spanspan stylecolor:#008000em# 校验用户名或密码/em/spanspan stylecolor:#0000ffif/span username span stylecolor:#393a34/span span stylecolor:#a31515kangkang/span span stylecolor:#0000ffand/span password span stylecolor:#393a34/span span stylecolor:#a31515123/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 校验成功保存session(导入、全局使用)/em/spansessionspan stylecolor:#393a34[/spanspan stylecolor:#a31515name/spanspan stylecolor:#393a34]/span span stylecolor:#393a34/span usernamespan stylecolor:#008000em# 重定向到home页面导入redirect/em/spanspan stylecolor:#0000ffreturn/span redirectspan stylecolor:#393a34(/spanspan stylecolor:#a31515//spanspan stylecolor:#393a34)/spanspan stylecolor:#0000ffelse/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 用户名或密码错误/em/spanspan stylecolor:#0000ffreturn/span render_templatespan stylecolor:#393a34(/spanspan stylecolor:#a31515Login.html/spanspan stylecolor:#393a34,/span errorspan stylecolor:#393a34/spanspan stylecolor:#a31515用户名或密码错误/spanspan stylecolor:#393a34)/spanspan stylecolor:#008000em# 编写首页/em/span
span stylecolor:#393a34appspan stylecolor:#393a34./spanroute/spanspan stylecolor:#393a34(/spanspan stylecolor:#a31515//spanspan stylecolor:#393a34)/span
span stylecolor:#0000ffdef/span span stylecolor:#393a34home/spanspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 先校验用户是否登录/em/spanspan stylecolor:#0000ffif/span sessionspan stylecolor:#393a34./spangetspan stylecolor:#393a34(/spanspan stylecolor:#a31515name/spanspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 校验登录通过展示首页/em/spanspan stylecolor:#0000ffreturn/span render_templatespan stylecolor:#393a34(/spanspan stylecolor:#a31515Home.html/spanspan stylecolor:#393a34,/span user_dictspan stylecolor:#393a34/spanUSERSspan stylecolor:#393a34)/spanspan stylecolor:#0000ffelse/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 没有登陆跳转到登陆页面/em/spanspan stylecolor:#0000ffreturn/span redirectspan stylecolor:#393a34(/spanspan stylecolor:#a31515/login/spanspan stylecolor:#393a34)/spanspan stylecolor:#008000em# 编写用户详情页/em/span
span stylecolor:#393a34appspan stylecolor:#393a34./spanroute/spanspan stylecolor:#393a34(/spanspan stylecolor:#a31515/detail/int:pk/spanspan stylecolor:#393a34)/span
span stylecolor:#0000ffdef/span span stylecolor:#393a34detail/spanspan stylecolor:#393a34(/spanpkspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 先校验用户是否登录/em/spanspan stylecolor:#0000ffif/span sessionspan stylecolor:#393a34./spangetspan stylecolor:#393a34(/spanspan stylecolor:#a31515name/spanspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 校验登录通过展示详情页面/em/spanuser_detail span stylecolor:#393a34/span USERSspan stylecolor:#393a34[/spanpkspan stylecolor:#393a34]/spanspan stylecolor:#0000ffreturn/span render_templatespan stylecolor:#393a34(/spanspan stylecolor:#a31515Detail.html/spanspan stylecolor:#393a34,/span userspan stylecolor:#393a34/spanuser_detailspan stylecolor:#393a34)/spanspan stylecolor:#0000ffelse/spanspan stylecolor:#393a34:/spanspan stylecolor:#008000em# 没有登陆跳转到登陆页面/em/spanspan stylecolor:#0000ffreturn/span redirectspan stylecolor:#393a34(/spanspan stylecolor:#a31515/login/spanspan stylecolor:#393a34)/spanspan stylecolor:#0000ffif/span __name__ span stylecolor:#393a34/span span stylecolor:#a31515__main__/spanspan stylecolor:#393a34:/spanappspan stylecolor:#393a34./spanrunspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/span/code/span/span
三、flask配置文件
1、配置文件的几种方式
flask不同于django可以在settings文件编写配置flask配置文件的方式有多种相较于django更加灵活
方式一直接编写
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# 在编写app的我呢见中直接编写配置用于测试/em/spanappspan stylecolor:#393a34./spandebugspan stylecolor:#393a34/spanspan stylecolor:#36acaaTrue/span span stylecolor:#008000em# 调试模式提示信息更详细修改代码不需要重启自动重启/em/spanappspan stylecolor:#393a34./spansecret_keyspan stylecolor:#393a34/spanspan stylecolor:#a31515dasdfasdfasd/span span stylecolor:#008000em# 秘钥只能 放debug和secret_key/em/span
/code/span/span
方式二使用app.config
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# 直接使用flask实例化的对象点出config的方式添加/em/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34[/spanspan stylecolor:#a31515DEBUG/spanspan stylecolor:#393a34]/spanspan stylecolor:#393a34/spanspan stylecolor:#36acaaTrue/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34[/spanspan stylecolor:#a31515SECRET_KEY/spanspan stylecolor:#393a34]/spanspan stylecolor:#393a34/spanspan stylecolor:#a31515sdfasdfasd/spanspan stylecolor:#0000ffprint/spanspan stylecolor:#393a34(/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34)/span
/code/span/span
方式三使用py文件然后载入
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# 将配置编写在py文件中然后使用方法导入不常用/em/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34./spanfrom_pyfilespan stylecolor:#393a34(/spanspan stylecolor:#a31515settings.py/spanspan stylecolor:#393a34)/span span stylecolor:#008000em# 变量必须大写/em/spanspan stylecolor:#0000ffprint/spanspan stylecolor:#393a34(/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34)/span
/code/span/span
方式四使用类导入
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# 同样是创建py文件区别是写在类中可以上线时候可以指定使用哪套/em/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34./spanfrom_objectspan stylecolor:#393a34(/spanspan stylecolor:#a31515settings.DevelopmentConfig/spanspan stylecolor:#393a34)/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34./spanfrom_objectspan stylecolor:#393a34(/spanspan stylecolor:#a31515settings.ProductionConfig/spanspan stylecolor:#393a34)/spanspan stylecolor:#0000ffprint/spanspan stylecolor:#393a34(/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34)/span
/code/span/span
方式五其他方式
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# 1、通过环境变量导入/em/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34./spanfrom_envvarspan stylecolor:#393a34(/spanspan stylecolor:#a31515环境变量名称/spanspan stylecolor:#393a34)/spanspan stylecolor:#008000em# 2、通过json文件载入/em/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34./spanfrom_jsonspan stylecolor:#393a34(/spanspan stylecolor:#a31515json文件名称/spanspan stylecolor:#393a34)/spanspan stylecolor:#008000em# JSON文件名称必须是json格式因为内部会执行json.loads/em/spanspan stylecolor:#008000em# 3、字典格式、配置中心/em/spanappspan stylecolor:#393a34./spanconfigspan stylecolor:#393a34./spanfrom_mappingspan stylecolor:#393a34(/spanspan stylecolor:#393a34{/spanspan stylecolor:#a31515DEBUG/spanspan stylecolor:#393a34:/span span stylecolor:#36acaaTrue/spanspan stylecolor:#393a34}/spanspan stylecolor:#393a34)/span
/code/span/span
2、常用的配置字段
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#393a34-/spanDEBUG span stylecolor:#008000em# debug模式/em/span
span stylecolor:#393a34-/spanSECRET_KEY span stylecolor:#008000em# session的key值 密钥/em/span
span stylecolor:#393a34-/spanSESSION_COOKIE_NAME span stylecolor:#008000em# 用户浏览器上cokie会变成设置的名字/em/span
span stylecolor:#393a34-/spanPERMANENT_SESSION_LIFETIME span stylecolor:#008000em# session过期时间/em/spanspan stylecolor:#008000em# 内置的配置字段其他可以写自己的比如 redis的连接地址mysql的连接地址/em/span
/code/span/span
四、路由系统
1、路由的本质
在django中路由写在urls.py文件下的path列表中
flask是基于装饰器的大部分都是使用装饰器来做少量的可以抽取到urls.py中
路由装饰器源码分析
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# 咱们这样写/em/spanspan stylecolor:#393a34appspan stylecolor:#393a34./spanroute/spanspan stylecolor:#393a34(/spanspan stylecolor:#a31515/login/spanspan stylecolor:#393a34)/spanspan stylecolor:#0000ffdef/span span stylecolor:#393a34index/spanspan stylecolor:#393a34(/spanspan stylecolor:#393a34)/spanspan stylecolor:#393a34:/spanspan stylecolor:#0000ffpass/spanspan stylecolor:#008000em#本质是---》indexapp.route(/login)(index)/em/spanspan stylecolor:#008000em# app.route(/login)的执行结果 decorator 函数/em/spanspan stylecolor:#393a34-/spanrule是路径span stylecolor:#393a34-/span其他参数都给了optionsspan stylecolor:#008000em# 然后 decorator(index)---在执行/em/spanspan stylecolor:#008000em# f是index/em/spanendpoint span stylecolor:#393a34/span optionsspan stylecolor:#393a34./spanpopspan stylecolor:#393a34(/spanspan stylecolor:#a31515endpoint/spanspan stylecolor:#393a34,/span span stylecolor:#36acaaNone/spanspan stylecolor:#393a34)/span span stylecolor:#008000em# 目前没有endpoint是None/em/spanspan stylecolor:#008000em# 核心本质--》self就是实例化得到的app对象flask对象/em/spanspan stylecolor:#008000em# app对象中有个方法add_url_rule这是在添加路由/em/spanspan stylecolor:#008000em# 不使用装饰器自己注册路由/em/spanselfspan stylecolor:#393a34./spanadd_url_rulespan stylecolor:#393a34(/spanrulespan stylecolor:#393a34,/span endpointspan stylecolor:#393a34,/span fspan stylecolor:#393a34,/span span stylecolor:#393a34**/spanoptionsspan stylecolor:#393a34)/spanspan stylecolor:#0000ffreturn/span fspan stylecolor:#0000ffdef/span span stylecolor:#393a34route/spanspan stylecolor:#393a34(/spanselfspan stylecolor:#393a34,/span rulespan stylecolor:#393a34:/span strspan stylecolor:#393a34,/span span stylecolor:#393a34**/spanoptionsspan stylecolor:#393a34:/span tspan stylecolor:#393a34./spanAnyspan stylecolor:#393a34)/span span stylecolor:#393a34-/spanspan stylecolor:#393a34/span tspan stylecolor:#393a34./spanCallablespan stylecolor:#393a34[/spanspan stylecolor:#393a34[/spanT_routespan stylecolor:#393a34]/spanspan stylecolor:#393a34,/span T_routespan stylecolor:#393a34]/spanspan stylecolor:#393a34:/spanspan stylecolor:#0000ffdef/span span stylecolor:#393a34decorator/spanspan stylecolor:#393a34(/spanfspan stylecolor:#393a34:/span T_routespan stylecolor:#393a34)/span span stylecolor:#393a34-/spanspan stylecolor:#393a34/span T_routespan stylecolor:#393a34:/spanendpoint span stylecolor:#393a34/span optionsspan stylecolor:#393a34./spanpopspan stylecolor:#393a34(/spanspan stylecolor:#a31515endpoint/spanspan stylecolor:#393a34,/span span stylecolor:#36acaaNone/spanspan stylecolor:#393a34)/spanselfspan stylecolor:#393a34./spanadd_url_rulespan stylecolor:#393a34(/spanrulespan stylecolor:#393a34,/span endpointspan stylecolor:#393a34,/span fspan stylecolor:#393a34,/span span stylecolor:#393a34**/spanoptionsspan stylecolor:#393a34)/spanspan stylecolor:#0000ffreturn/span fspan stylecolor:#0000ffreturn/span decoratorspan stylecolor:#008000em# 可以不使用装饰器的方式注册路由/em/spanappspan stylecolor:#393a34./spanadd_url_rulespan stylecolor:#393a34(/spanspan stylecolor:#a31515//spanspan stylecolor:#393a34,/span endpointspan stylecolor:#393a34/spanspan stylecolor:#36acaaNone/spanspan stylecolor:#393a34,/span view_funcspan stylecolor:#393a34/spanhomespan stylecolor:#393a34,/span methodsspan stylecolor:#393a34/spanspan stylecolor:#393a34[/spanspan stylecolor:#a31515GET/spanspan stylecolor:#393a34]/spanspan stylecolor:#393a34)/spanspan stylecolor:#008000em# flask路由的本质是app对象的add_url_rule完成路由的注册/em/span
/code/span/span
2、add_url_rule参数
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-pythonspan stylecolor:#008000em# rule URL规则/em/span
span stylecolor:#008000em# view_func 视图函数名称/em/span
span stylecolor:#008000em# defaults None 默认值, 当URL中无参数函数需要参数时使用defaults {k: v}为函数提供参数/em/span
span stylecolor:#008000em# endpoint None, 路径的别名名称用于反向解析URL即 url_for(名称)/em/span
span stylecolor:#008000em# methods None, 允许的请求方式如[GET, POST]/em/spanspan stylecolor:#008000em#对URL最后的 / 符号是否严格要求/em/span
strict_slashes span stylecolor:#393a34/span span stylecolor:#36acaaNone/spanspan stylecolor:#a31515app.route(/index, strict_slashesFalse)#访问http://www.xx.com/index/ 或http://www.xx.com/index均可app.route(/index, strict_slashesTrue)#仅访问http://www.xx.com/index/spanspan stylecolor:#008000em#重定向到指定地址/em/span
redirect_to span stylecolor:#393a34/span span stylecolor:#36acaaNone/spanspan stylecolor:#393a34,/span span stylecolor:#a31515app.route(/index/int:nid, redirect_to/home/nid)/spanspan stylecolor:#008000em# 需要记住的/em/spanspan stylecolor:#008000em# rule /em/spanspan stylecolor:#008000em# view_func /em/spanspan stylecolor:#008000em# defaults/em/spanspan stylecolor:#008000em# endpoint/em/spanspan stylecolor:#008000em# methods/em/span
/code/span/span
3、转换器
span stylecolor:#393a34span stylebackground-color:whitecode classlanguage-python span stylecolor:#a31515default/spanspan stylecolor:#393a34:/span UnicodeConverterspan stylecolor:#393a34,/spanspan stylecolor:#a31515string/spanspan stylecolor:#393a34:/span UnicodeConverterspan stylecolor:#393a34,/spanspan stylecolor:#a31515any/spanspan stylecolor:#393a34:/span AnyConverterspan stylecolor:#393a34,/spanspan stylecolor:#a31515path/spanspan stylecolor:#393a34:/span PathConverterspan stylecolor:#393a34,/spanspan stylecolor:#a31515int/spanspan stylecolor:#393a34:/span IntegerConverterspan stylecolor:#393a34,/spanspan stylecolor:#a31515float/spanspan stylecolor:#393a34:/span FloatConverterspan stylecolor:#393a34,/spanspan stylecolor:#a31515uuid/spanspan stylecolor:#393a34:/span UUIDConverterspan stylecolor:#393a34,/spanspan stylecolor:#008000em# 了解让路由支持正则忽略掉/em/span/code/span/span