IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> [前后端分离开发] vue-element-admin和flask前后端分离结合 -> 正文阅读

[Python知识库][前后端分离开发] vue-element-admin和flask前后端分离结合

更新ing,记录项目开发遇到的问题

一. 接口跨域问题

使用 flask_cors模块来处理跨域请求

虚拟环境中安装 flask_cors 包

pip install flask_cors

直接在flask后台设置

from flask_cors import CORS

 # 创建webapp应用,__name__是python预定义变量,被设置为使用本模块.
app = Flask(__name__)
 
 @app.before_request
    def bf_request():
        if request.path not in ["/user/login", "/user/logout"]:
            token = session.get("token")
            if not token:
                pass

 
# 添加header解决跨域
@app.after_request
def after_request(response):
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Credentials'] = 'true'
    response.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'
    response.headers['Access-Control-Allow-Headers'] = 'Content-Type, X-Requested-With'
    return response


   
app.after_request(after_request)
 
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8999)
    # 解决跨域
    CORS(app, supports_credentials=True)
# 此处对应了路由文件routes.py中的内容
from app import routes

CORS参数说明
在这里插入图片描述

与前端ajax交互问题

处理json数据

在flask中有一个方法是make_response(),是返回响应的函数,通过这个函数能返回一个响应

res = make_response(json_data)
res.headers['Access-Control-Allow-Origin'] = '*'

json_data为请求的数据,返回一个字典如
data={ "response": 200, "value": "success"},然后使用json_data=jsonify(data)对字典数据进行json格式化

测试和ajax交互

前端用phpstudy搭建一个简易网页测试console能否获取数据,并在页面显示。
前端代码:

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>python接口测试</title>
	<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
	<h2>flask前后端跨域测试</h2>
	<button onclick="getMessage()">点击获取数据</button>
	<p>姓名:<span id="test_name">loading...</span></p>
	<p>年龄:<span id="test_age">loading...</span></p>
	<script>
		function jsonpCallback(data) {
		    console.log("jsonpCallback: " + JSON.parse(data).name)
		}
		function getMessage(){
			$.ajax({
				url:'http://127.0.0.1:9999/index?callback=?',
				type:'GET',
				dataType:'jsonp',
				crossDomain:true,
				contentType: "application/jsonp;",
				// jsonp 字段含义为服务器通过什么字段获取回调函数的名称
		        jsonp: 'callback',
		        // 声明本地回调函数的名称,jquery 默认随机生成一个函数名称
		        jsonpCallback: 'jsonpCallback',
				success: function(data) {
					$('#test_name').text(JSON.parse(data).name);
        			$('#test_age').text(JSON.parse(data).age);
		            console.log("ajax success callback: " + JSON.parse(data).name);

		        },
		        error: function(jqXHR, textStatus, errorThrown) {
		            console.log(textStatus + ' ' + errorThrown);
		        }
			})
		}
	</script>
</body>
</html>

后端代码:

from flask import Flask
import json
app = Flask(__name__)
@app.route('/index',methods=['get']) #'index'是接口路径,methods不写,则默认get请求
#装饰器下面的函数为一个接口
def index():
	data =  '{"name":"Ev1near","age":"21"}'
	callback = 'jsonpCallback'
	jsonp = callback + '(' + json.dumps(data) + ')'
	return jsonp #返回的是代码字样

if __name__ == '__main__':
	app.run(port=9999,debug=True,host='localhost')

在这里插入图片描述

在这里插入图片描述
点击按钮显示后端结果:
在这里插入图片描述

注:前端结合vue的跨域待补充

参考文章

python flask与ajax交互中的跨域问题以及解决方案

Python之flask框架配置接口,处理跨域

二. flask+mysql

参考文章

Mysql+Echarts+Python+Flask实现前后端交互及数据可视化(亲测可用)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 11:58:44  更:2021-08-13 12:00:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 19:20:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码