Flask介绍(轻量级的框架)

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。默认情况下,Flask 不包含数据库抽象层、表单验证,或是其它任何已有多种库可以胜任的功能。然而,Flask 支持用扩展来给应用添加这些功能,如同是 Flask 本身实现的一样。众多的扩展提供了数据库集成、表单验证、上传处理、各种各样的开放认证技术等功能。

使用

from flask import Flask

app = Flask(__name__)

# 添加路由方式一
@app.route('/')
def hello_world(): return 'Hello World!' # 添加路由方式二
# app.add_url_rule('/', view_func=hello_world) if __name__ == '__main__':
app.run(host="0.0.0.0", port=9527, debug=True) # wsgi 应用程序网关接口 把你请求处理后发送给对应的app
# werkzeug

路由三种返回方式

from flask import Flask, render_template, redirect

app = Flask(__name__)

# 三种返回方式

@app.route('/')
def hello_world(): return 'Hello World!' @app.route("/login")
def login():
# 模板渲染
return render_template("login.html") @app.route("/home")
def home():
# 重定向
return redirect("/") if __name__ == '__main__':
# app.run(host="0.0.0.0", port=9527, debug=True)
app.run(debug=True)
# wsgi 应用程序网关接口 把你请求处理后发送给对应的app
# werkzeug

登录举例

from flask import Flask, render_template, redirect, request,session

app = Flask(__name__)
app.secret_key = "abcdefg" # Session, Cookies以及一些第三方扩展都会用到SECRET_KEY值
# 三种返回方式 @app.route('/')
def hello_world(): return 'Hello World!' @app.route("/login", methods=("GET","POST"))
def login():
# 模板渲染
# print(request.path)
# print(request.url)
# print(request.headers)
if request.method == "GET":
print(request.args.get("id"))
return render_template("login.html")
else: # print(request.form)
# print(request.values.to_dict()) # 这个里面什么都有,相当于body
# print(request.json) # application/json
# print(request.data)
username = request.form.get("username")
password = request.form.get("password")
if username == "alex" and password == "":
session["user_info"] = username
# session.pop("user_info") #删除session
return "登录成功"
else:
return render_template("login.html", msg="用户名或者密码错误") @app.route("/home")
def home():
# 重定向
return redirect("/") if __name__ == '__main__':
# app.run(host="0.0.0.0", port=9527, debug=True)
app.run(debug=True)
# wsgi 应用程序网关接口 把你请求处理后发送给对应的app
# werkzeug

login.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>登录页面</h1>
<form action="/login?id=002" method="post">
<p>用户名:<input type="text" name="username"></p>
<p>密码:<input type="text" name="password"></p>
<p><input type="submit" value="查看小秘密"></p>
<p>{{ msg }}</p>
</form> </body>
</html>

一般错误解决

使用

@app.route("/xx", methods=("GET","POST"))

  使用

app.secret_key = "abcdefg"  # Session, Cookies以及一些第三方扩展都会用到SECRET_KEY值

  

Flask 学习(一)简单介绍的更多相关文章

  1. JMeter学习工具简单介绍

    JMeter学习工具简单介绍   一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态 ...

  2. Flask web开发 简单介绍

    Flask是一个基于python的轻量级web框架.当安装好后Flask后 (pip install flask),就可以开始使用了. 一.最简单的例子 1.新建目录,作为web应用的目录,如: mk ...

  3. linux视频学习(简单介绍)20160405

    看一周学会linux系统的学习笔记. 1.linux系统是一个安全性高的开源,免费的多用户多任务的操作系统. 2.linux工作分为linux系统管理员,linux程序员(PC上软件开发,嵌入式开发) ...

  4. vue学习总结(简单介绍)

    声明式渲染 Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统: <div id="app"> {{ message }} < ...

  5. RestfulApi 学习笔记——简单介绍(一)

    前言 什么是restapi? 直接看:http://www.ruanyifeng.com/blog/2014/05/restful_api.html 阮一峰的blog,即可明白,下面是一些例子,增强理 ...

  6. iOS边练边学--Http网络再学习,简单介绍

    一.URL 什么是URL URL中常见的协议 二.Http Http的基本通信过程 发送Http请求的方法 GET 和 POST 对比 GET 和 POST 的选择 三.iOS中的Http学习 iOS ...

  7. Nginx学习——Nginx简单介绍和Linux环境下的安装

    一:Nginx的简介 百科百科:Nginx Nginx 是一个俄罗斯的哥们开发的,并将其进行了开源. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器, ...

  8. 【转载】JMeter学习(一)工具简单介绍

    JMeter学习(一)工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静 ...

  9. 一步一步学习SignalR进行实时通信_1_简单介绍

    一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...

  10. [转]ZooKeeper学习第一期---Zookeeper简单介绍

    ZooKeeper学习第一期---Zookeeper简单介绍 http://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKe ...

随机推荐

  1. BST二叉树的二分查找

    900. 二叉搜索树中最接近的值 中文 English 给一棵非空二叉搜索树以及一个target值,找到在BST中最接近给定值的节点值 样例 样例1 输入: root = {5,4,9,2,#,8,1 ...

  2. 项目Beta冲刺(团队) --3/7

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Beta冲刺 团队名称:葫芦娃队 作业目标:进行新一轮的项目冲刺,尽力完成并完善项目 团队博客 队员学号 队员昵称 博客地址 04160242 ...

  3. 【Hadoop】新建hadoop用户以及用户组,给予sudo权限(转)

    1.首先新建用户,adduser命令 sudo adduser hadoop passwd hadoop 输入密码之后,一路 y 确定. 2.添加用户组 在创建hadoop用户的同时也创建了hadoo ...

  4. 如果wordpress分类只有一篇文章则直接跳转到文章页

    每个项目的需求都不一样,比如最近ytkah的客户提出如果wordpress分类只有一篇文章则直接跳转到文章页,这个实现起来不会很麻烦,几行代码就能搞定,下面就来一起看看吧.打开主题的function. ...

  5. jquery.lazyload.js-v1.9.1延时加载插件,已兼容ie6和各大浏览器

    来源:http://www.jq22.com/jquery-info390 使用前要求: img的设置: 1.class要配上“lazy”: 2.用data-original代替src: 3.如果想要 ...

  6. ZOJ3261-Connections in Galaxy War-(逆向并查集+离线处理)

    题意: 1.有n个星球,每个星球有一个编号(1-n)和一个能量值. 2.一开始将某些星球连通. 3.开战后有很多个操作,查询某个星球能找谁求救或者摧毁两颗星球之间的连通路径,使其不能连通.如果连通则可 ...

  7. day002-Linux基础之常用基本命令讲解

    Linux系统一切皆命令 命令1:pwd 显示当前所在目录命令2:cd(change directory) 切换目录 cd / 回到根目录 cd .. 返回上一级命令3:ls 查看当前目录下的文件 l ...

  8. Tasking

    Put your plan on the tick list, and set the completion time limit, daily repetition, etc. according ...

  9. PHP Record the number of login users

    Function to record how many times the user logs in Connect to the database first: you can create a n ...

  10. 推荐 11 个好用的 JS 动画库

    为了保证的可读性,本文采用意译而非直译. 1.Three.js 超过46K的星星,这个流行的库提供了非常多的3D显示功能,以一种直观的方式使用 WebGL.这个库提供了<canvas>. ...