🍖Flask四剑客及简单使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了🍖Flask四剑客及简单使用相关的知识,希望对你有一定的参考价值。
一.Flask 的使用
1.简单使用
- 展示 "hello word"
from flask import Flask
app = Flask(__name__)
@app.route(\'/\')
def index():
return \'<h1>Hello Word!</h1>\'
if __name__ == \'__main__\':
# flask默认的端口是5000
app.run() # 本质还是调用了run_simple()方法:(源码)run_simple(host, port, self, **options)
- 效果
- 方法及参数分析
from flask import Flask # 导入Flask类
app = Flask(__name__)
"""
Flask内参数:
import_name : Flask程序所在的包(模块),传 __name__ 就可以,用来决定Flask在访问静态文件时查找的路径
static_path : 静态文件访问路径(不推荐使用,使用 static_url_path 代替)
static_url_path : 静态文件访问路径,可以不传,默认为:/ + static_folder
static_folder : 静态文件存储的文件夹,可以不传,默认为 static
template_folder : 模板文件存储的文件夹,可以不传,默认为 templates
"""
@app.route(\'/\')
def index():
return \'<h1>Hello Word!</h1>\'
"""
flask的路由是通过给视图添加装饰器的方式进行编写的。当然也可以分离到另一个文件中
flask的视图函数,flask中默认允许通过return返回html格式数据给客户端
"""
if __name__ == \'__main__\':
# 运行flask,指定ip和port(默认是本机,5000端口)
app.run(host="0.0.0.0", port=5000)
二.Flask 四剑客、jinja2、request、登入入示例
1.Falsk 三剑客
- request : 类比Django中 HttpResponse (HTTP请求)
- render_template : 类比Django中 render (渲染)
- redirect : 类比Django中 redirect (重定向)
- jsonify : 类比Django中 JsonResponse(返回json格式数据)
2.jinja2 模板语法
- 与Django的DTL类似,但是比DTL强大,支持加括号执行,字典支持中括号取值和get取值
3.请求数据的存放的位置
- get 请求 :
request.query_string.get(\'xxx\')
- post 请求 :
request.form.get(\'xxx\')
3.登入示例
- run.py
from flask import Flask, render_template, request, redirect
app = Flask(__name__)
app.debug = True
"""
开发阶段,设置debug模式
会在页面中显示错误信息
可以在修改代码之后自动重启服务
"""
# 用户信息
USERS = {
1: {\'name\': \'派大星\', \'age\': 18, \'gender\': \'男\', \'info\': "星星星星星"},
2: {\'name\': \'海绵宝宝\', \'age\': 28, \'gender\': \'男\', \'info\': "宝宝宝宝宝"},
3: {\'name\': \'章鱼哥\', \'age\': 18, \'gender\': \'女\', \'info\': "鱼鱼鱼鱼鱼鱼"},
}
@app.route(\'/\')
def index():
# 渲染页面,展示用户信息,前端使用的是jinjia2模板语法
return render_template(\'index.html\', user=USERS)
# 前端通过转换器传入id参数
@app.route(\'/detail/<int:id>\')
def detail(id):
# 拿到该id用户渲染到详情页面
user = USERS[id]
return render_template(\'detail.html\', user=user)
# flask默认只允许get请求, 可以通过methods添加请求类型
@app.route(\'/login/\', methods=["GET", "POST"])
def login():
if request.method == "POST":
password = request.form.get(\'password\')
username = request.form.get(\'username\')
if username == "shawn" and password == "123":
# 登入成功重定向到首页
return redirect(\'/\')
else:
return render_template(\'login.html\', error=\'用户名或密码错误!\')
return render_template(\'login.html\')
if __name__ == \'__main__\':
app.run()
- index.html
<meta charset="UTF-8">
<title>Title</title>
<h1>用户信息</h1>
{% for k,v in user.items() %}
{% endfor %}
<table><tbody><tr>
<td>{{k}}</td>
<td>{{v.name}}</td>
<td>{{v[\'name\']}}</td>
<td>{{v.get(\'name\')}}</td>
<td><a href="/detail/{{k}}"> 查看简介</a></td>
</tr></tbody></table>
- detail.html
<h1>用户信息: {{user.name}}</h1>
<div>
{{user.info}}
</div>
- login.html
<h1>用户登录</h1>
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="登录"><br><span style="color: red">{{error}}</span>
</form>
</int:id>
以上是关于🍖Flask四剑客及简单使用的主要内容,如果未能解决你的问题,请参考以下文章
shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)
Flask第二章:Flask三剑客(HTTPResponserenderredirect)和辅招(jsonifysend_file)