Flask零基础--基础篇

2021-01-29 10:34:34 浏览数 (1)

Flask零基础--基础篇

  • Flask
    • Flask实现接口
    • Html页面
    • 运行
    • 跨域问题
    • 部署静态页面

Flask

工作项目中想在自己机器搭建一个服务器,使用到了flask,因为之前没接触过后台和服务器等知识,所以从使用角度进行下整理和总结。

上一篇我们搭建了最基础的hello,world服务。这一篇我们来让前端页面和后台有个小互动,进行最简单的数据传输。

Flask实现接口

我们调整下run.py的代码,增加一个接口函数

代码语言:javascript复制
from flask import request

#链接传参方式,通过路由执行方法info,传参Key='data'
@app.route("/info",methods=['GET',])
def sendinfo():
    #获取到传入url中参数data对应的值
    data = request.args.get('data')
    return process("id",data)

def process(id,data):
    return "xixi,get!your data is:" data

这样我们的链接需要给我们传入data数据,然后我们返回一个经过process处理后的结果。

Html页面

我们新建一个test.html,脚本比较简单

代码语言:javascript复制
<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>flask test</title> 
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript">
        function test(){
        //获取 输入框的值
        //alert(document.getElementById("test").value);
	vs = document.getElementById("test").value.replace(/n/g,';')
	window.open('http://你的IP:5000/info?data=' vs);
        }
    </script>

<form action="demo-form.php">
<textarea id="test" rows="4" cols="50" name="comment" required>
</textarea>
</form>
<input type="submit" value="提交"  onclick="test()"/>
</body>
</html>

这里说明下我们demo传输的data参数比较少所以使用的GET方式,如果是图片这种还是建议使用POST方式,本篇就不多介绍POST方式传输数据了,如果需要大家可以评论留言进行讨论。

运行

OK,现在我们运行run.py

然后在本地打开页面

我们点击提交后,编辑框内的字符串作为参数传输到sendinfo函数内,然后返回给页面处理后的结果

跨域问题

代码语言:javascript复制
	如果你的前端页面中使用了jquery在运行过程中可能会出现服务器能成功接收信息,但是页面没有反馈的问题,
	CORS policy `No Access-Control-Allow-Origin`的错误(浏览器打开开发者模式,可以看到出错信息)

这个主要是跨域问题,我们在run.py里加入以下代码就可以解决此问题

代码语言:javascript复制
from flask_cors import CORS
# 跨域支持,解决jquery的跨域请求问题
CORS(app, supports_credentials=True)

部署静态页面

我们在使用过程中,也不能一直使用本地页面,所以需要把我们刚写好的html文件部署到外面服务器上,这样直接在浏览器输入链接来测试我们的页面功能。下面看下怎么把页面放到服务上。

我们在项目目录下新建一个static文件夹,然后把test.html页面放到static目录下

然后打开run.py文件,添加如下代码

代码语言:javascript复制
#root_path就是你的工程路径
app = Flask(__name__,static_url_path='',root_path='/home/yourname/code/flask/yourproject/')
# 跨域支持,解决jquery的跨域请求问题
CORS(app, supports_credentials=True)
#加载静态页面
@app.route('/')
def loadhtml():
    #直接放在static
    return app.send_static_file('test.html')

然后再浏览器中输入ip:port/test.html(0.0.0.0:5000/test.html) 就可以看到我们的前端页面了。

0 人点赞