Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。
Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
中文文档
Flask安装: 在PyCharm的Terminal中输入下面命令
pip install flask
(1) 添加数据库文件 (2) 创建所需数据库 (3) 导入数据
数据资源(百度网盘):
链接:https://pan.baidu.com/s/1NpAUoEIrMSvC4PmxCptnQA
提取码:cu5s
先下载pymysql模块,安装方式同Flask
pip install pymysql
from flask import Flask
app = Flask(__name__) # app为实例对象名
@app.route('/index') # 放在自定义处理数据方法的上面,表示该方法的数据传到对应的页面上
思路:
import json
import pymysql
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def index():
"""使用pymysql加载首页数据"""
# 1. 创建连接对象
conn = pymysql.connect(host='127.0.0.1', database='booksite',
user='root', password='root')
# 2. 创建游标对象
cursor = conn.cursor()
# 3. 准备SQL
sql = 'select * from bookinfo;'
# 4. 执行SQL
cursor.execute(sql)
# 5. 获取返回数据 ((), (), ())
result = cursor.fetchall()
# 6. 关闭游标对象和连接对象
cursor.close()
conn.close()
# 7. 转换为列表套字典的形式
data_list = []
for data in result:
data_list.append({
"id": data[0],
"name": data[1],
"auth": data[2],
"img_url": data[3],
"rank": data[4]
})
print(data_list)
# 8. 转换为JSON字符串
# dumps: 将Python的对象类型, 转换为JSON字符串类型
# loads: 将JSON字符串, 转换为Python的对象类型
# 这个dumps在调用时, 会自动转换编码为ascii编码
jons_str = json.dumps(data_list, ensure_ascii=False)
return jons_str
确保url请求的端口号是Flask项目运行的端口号
确保url请求的路径index和Flask项目的路由地址一致
代码:
// 首页JS文件路径: front/js/index.js
$.get('http://127.0.0.1:5000/index',function(data,status){具体代码略}
思路:
import json
import pymysql
from flask import Flask
app = Flask(__name__)
@app.route('/detail')
def detail():
# 1、通过请求对象获取查询参数
# request.args 就是获取 ?id=X 的参数
book_id = request.args.get('id', '1')
# print(book_id)
# 2、查询数据库
conn = pymysql.connect(database='booksite', user='root', password='root', host='127.0.0.1')
cursor = conn.cursor()
sql = f'select * from bookinfo where id = {book_id}'
cursor.execute(sql)
result = cursor.fetchone()
# 3、将数据转成JSON
data_dict = {
"id": result[0],
"name": result[1],
"auth": result[2],
"img_url": result[3],
"read": result[5],
"comment": result[6],
"score": result[8],
"content": result[7],
"synopsis": result[9]
}
# 4、将更新后的数据写入数据库
read = result[5] + 1
sql = f'update bookinfo set bread={read} where id={result[0]}'
cursor.execute(sql)
# 更新后必须 使用commit方法保存
conn.commit()
cursor.close()
conn.close()
json_str = json.dumps(data_dict)
return json_str
确保url请求的端口号是Flask项目运行的端口号
确保url请求的路径detail和Flask项目的路由地址一致
原因:考虑到安全性, 浏览器是不允许跨域(不同地址)访问的. 默认只有IP和端口完全一致时, 才允许访问. 由于咱们的静态服务器和动态服务器不在一个端口上, 因此会涉及跨域访问问题. 暂时的办法是设置允许跨域访问
(1) 下载flask_cors
pip install flask-cors
(2) 设置允许跨域访问
import json
import pymysql
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app, origins='*')
import pymysql
import json
from flask_cors import CORS
from flask import Flask, request
# Flask函数接收一个参数__name__,指向程序所在的包
app = Flask(__name__)
# 允许web进行跨越数据访问
CORS(app, origin='*')
# @app.route 的作用是将路由映射到视图函数 index
@app.route('/')
def index():
# 1、创建连接对象
conn = pymysql.Connect(database='booksite', user='root', password='root', host='127.0.0.1')
# 2、创建游标对象
cursor = conn.cursor()
# 3、准备SQL
sql = 'select * from bookinfo;'
# 4、执行SQL
cursor.execute(sql)
# 5、获取返回数据
result = cursor.fetchall()
# print(result)
# 6、关闭游标对象和连接对象
cursor.close()
conn.close()
# 7、转换成列表套字典的形式(可以被json识别)
data_list = []
for data in result:
data_list.append({
"id": data[0],
"name": data[1],
"auth": data[2],
"img_url": data[3],
"rank": data[4]
})
# print(data_list)
# 8、转换成json字符串
# (1) json.loads():loads 将JSON字符串,变成Python的对象,类似于JSON.parse
# (2) json.dumps():dumps 将Python的对象,变成JSON字符串
# ensure_ascii=False 默认JSON数据是按照ascii编码进行转换的,为了方便查看暂时关闭 ensure_ascii
json_str = json.dumps(data_list, ensure_ascii=False)
return json_str
@app.route('/detail')
def detail():
# 1、通过请求对象获取查询参数
# request.args 就是获取 ?id=X 的参数
book_id = request.args.get('id', '1')
# print(book_id)
# 2、查询数据库
conn = pymysql.connect(database='booksite', user='root', password='root', host='127.0.0.1')
cursor = conn.cursor()
sql = f'select * from bookinfo where id = {book_id}'
cursor.execute(sql)
result = cursor.fetchone()
# 3、将数据转成JSON
data_dict = {
"id": result[0],
"name": result[1],
"auth": result[2],
"img_url": result[3],
"read": result[5],
"comment": result[6],
"score": result[8],
"content": result[7],
"synopsis": result[9]
}
# 4、将更新后的数据写入数据库
read = result[5] + 1
sql = f'update bookinfo set bread={read} where id={result[0]}'
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
json_str = json.dumps(data_dict)
return json_str
if __name__ == '__main__':
app.run(debug=True)