Flask基础教程

更新时间:2023-05-23 10:50:03 阅读: 评论:0

Flask基础教程Flask基础
安装⽅法pip install flask
从函数到接⼝
npt加法函数
def add(a,b):
return a+b
如果a,b是字符格式的数字呢
args = {'a': '1', 'b':'2'}  # 参数字典
def add():
a = ('a')
b = ('b')
c = int(a) + int(b)
return c
加法接⼝
# app.py
from flask import Flask,request
app = Flask(__name__)
@ute('/add')
def add():
a = ('a')  # 参数为字符串格式
b = ('b')  # 参数字符串格式
s = int(a) + int(b)
return str(s)  # 响应需为字符串
命令⾏在脚本所在⽬录运⾏flask run
$ flask run
* Environment: production
WARNING: Do not u the development rver in a production environment.
U a production WSGI rver instead.
* Debug mode: off
* Running on 127.0.0.1:5000/ (Press CTRL+C to quit)
如果报错可以配置环境变量LC_ALL=en_US.utf-8
也可以在脚本中添加
if __name__ == '__main__':
英语国际音标发音表
app.run()
然后运⾏该脚本
测试接⼝
使⽤POST或其他请求⽅法
@ute('/add', methods=["GET,POST"])
白描手法是什么意思
获取请求数据
request.args: 请求URL参数字典
request.form: 请求表单数据字典
request.json: 请求JSON数据字典
request.values: 请求URL参数和表单数据的组合字典
练习:改为使⽤表单数据及JSON数据
组装响应
1. 返回字符串:return '3'
2. 返回⽹页: return '<h1>测试报告</h1>'
3. 附带状态码及响应头: return '',201,{'test': 'abc'}
4. 返回JSON数据: return jsonify({"code": 0, "msg": "success"}) # 需要导⼊jsonify
渲染并返回⽹页
from flask import render_template
name=lilei
x=male
skills=['Python','Java']学大教育一对一价格
...
return render_template('list.html', name=name,x=x,skills=skills)
templates/list.html
<h2>{{name}}</h2>
<h2>性别</h2>
{% if x=male %}
{% el %}
{% endif %}
<h2>技能</h2>
{% for skill in skills %}
{{skill}}
{% endfor %}
重定向响应
walkman是什么意思from flask import redirect, url_for
...
return redirect('/') # return redirect(url_for('index'))
终⽌响应
from flask import abort
...
if not ('a'):
abort(400)
⽰例:注册接⼝
import pymysql
from flask import Flask,request,jsonify,abort
conn = t(host='115.28.108.130', port=3306, ur='test', password='abc123456', db='api_test', chart='utf8') cur = conn.cursor()
@ute('/api/ur/reg/', methods=['POST'])
def reg():
# 参数验证
if not request.json:
abort(400)
name = ('name')
password = ('password')
if not name or not password:
abort(400)
# 检查⽤户名是否存在
result = ute(f'lect id form ur where name="{name}"')
if result:
return jsonify({'code': '100001', 'msg': '⽤户已存在'})
# 插⼊⽤户数据
try:
return jsonify({'code': '100001', 'msg': '注册成功'})
except:
return jsonify({'code': '100002', 'msg': '注册失败'})
练习:编写⼀个登录接⼝,⽀持GET和POST,GET返回登录页⾯,POST进⾏登录操作通过hod==GET或POST来判断请求⽅法
登录页⾯ templates/login.html
<form method="post" action=".">
<div>⽤户名:<input name="name" type="text"></div>
<div>密码:<input name="password" type="password"></div>
<div><input type="submit">
</form>
app.py
...
@ute('/api/ur/login/', methods=['GET', 'POST'])
def login():
hod=='POST':美国大选第二场辩论
name = ('name')
password = ('password')
if not name or not password:
abort(400)
result = ute(f'lect id from ur where name="{name}" and passwd="{password}"')
if result:
return '<h1>登录成功</h1>'
el:
return '<h1>⽤户名或密码错误</h1>'
return render_template('login.html')
password填⼊" or "1发现SQL注⼊漏洞
使⽤ORM
ORM对象关系映射,将⼀个数据库表映射为⼀个Python的类,使⽤成熟的ORM框架可以简化数据库操作、减少SQL语句错误及安全问题。安装flask-sqlalchemy: pip install flask-sqlalchemy
数据库配置
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy(app)
数据模型设计
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
body = db.Column(db.Text)
默认表名为类名转⼩写,即post,也可以通过 __table__指定表名
使⽤MySQL数据库 fig['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:密码@115.28.108.130/数据库名' #需要建表权限
SQLAlchemy常⽤字段类型
Ingeger: 整数
Float: 浮点数
Boolean: 布尔值
String: 字符串
Text: 不限长度的⽂本
Date: ⽇期对象
Time: 时间对象
DateTime: ⽇期时间四级考试作文
Interval: 时间间隔
常⽤的SQLAlchemy字段参数
primary_key: 是否主键
unique: 是否唯⼀
aoteindex: 是否索引
nullable: 可否为空,默认True
default: 默认值
创建表
进⼊app.py所在⽬录,运⾏
$ flask shell
日语假名标注>>> from app import db
>>> db.create_all()
增删改查
>>> from app import db, Post
>>> p = Post(title='第⼀篇博客', body='第⼀篇博客正⽂')
成人高考语文
>>> db.ssion.add(p)
>>> it()
>>> Post.query.all()
>>> (1)
>>> Post.query.filter_by(title='第⼀篇博客').first()
Post.query.all():获取所有数据
(): 获取⼀条数据,⽆数据报错
Post.query.first(): 获取第⼀条数据,⽆数据不报错
(id): 获取指定id的数据
_or_404(id): 找不到返回404
Post.query.filter_by(): 过滤数据,得到⼀个数据集删
>>> p = _or_404(1)
>>> db.ssion.delete(p)
>>> db.commit()
>>> p = _or_404(1)
>>> p.title='第⼀篇博客改'
>>> it()

本文发布于:2023-05-23 10:50:03,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/744145.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   参数   响应   脚本   请求   数据库   表单   字典
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图