logo头像

我有一个梦想

flask项目使用

本文于 1643 天之前发表,文中内容可能已经过时。

Flask简介

Flask是一个使用 Python 编写的轻量级 Web 应用框架。

Flask环境配置

1
2
3
4
5
6
7
8
9
10
11
//添加flask
pip3 install Flask
//添加python3的mysql支持
pip3 install pymysql
//添加Flask-SQLAlchemy链接mysql
pip3 install Flask-SQLAlchemy
//添加tornado线上管理
pip3 install tornado
//python网络请求框架
pip3 install requests

FLask基本使用

1
2
3
4
5
6
7
8
9
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World!'

if __name__ == '__main__':
app.run()

Flask项目的目录

目录

其中 scss是进行屏幕适配的,使用vw进行适配

templates中存放的是html文件,前端界面

app中是网站的路由管理及后台处理

model是数据库的设置

tornado_sever是使用tornado进行线上部署管理

  1. 本项目连接的是mysql数据库
1
2
3
4
5
6
7
8
9
DIALECT = ''  # 要用的什么数据库
DRIVER = '' # 连接数据库驱动
USERNAME = '' # 用户名
PASSWORD ='' # 密码
HOST = '' # 服务器
PORT ='' # 端口
DATABASE = '' # 数据库名
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False
  1. 使用torndo进行线上管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# tornado_server.py
# coding=utf-8

from tornado.wsgi import WSGIContainer

from tornado.httpserver import HTTPServer

from tornado.ioloop import IOLoop

from app import app

if __name__ == '__main__':
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)
IOLoop.instance().start()

问题总结

  1. https网页中解决http请求

问题:在线上环境,本项目成为https的网页链接,其中牵扯到http的网络请求交互,在游览器 中,这种行为 是被禁止的,所以http请求都被终止

解决方案: 在前端js中的http请求映射到python后台接口中,通过python请求http请求后将结果返回给js前端页面进行交互

  1. 路由接口重定向

    1
    redirect(url_for(''))
  2. 版本更新前端静态资源没有更新

问题:前端页面更新后,修改的样式,逻辑没有更新,是因为游览器存在缓存导致,加载的是上一个版本的静态资源。

解决方案:在必要的css和js文件在html中引用时,需要添加后缀,如下:

1
<script src="../static/js/city.js?v={{ version }}"></script>

通过统一处理,在开发环境中version为一个随机数,在正式环境中version为版本号,这样在上线后,直接可以查看本项目是否已经更新到最新版本

截图

  1. 手机端网页适配

    添加scss生成css的适配方案

  2. ajax中多次请求后,需要获取最后一次的请求数据,请求频繁导致先请求的数据后面请求成功,则顺序被改变,

    所以需要对请求的接口进行判断处理,在请求成功后,如果二次进入了,则关闭上次的请求,在返回成功和失败的接口处进行close的处理

  3. 微信pc端无法加载es6的js代码,需要转化为es5,去掉let =>等es6标识,即可

Flask运行

在生产环境中运行

1
python app.py

在开发环境中运行

1
python tornado_server.py

Flask中默认启用的是5000端口,所以链接地址为localhost:5000/xxx
如果不想使用5000端口,需要在app.run中进行设定

1
2
3
4
app.run(
host='0.0.0.0',
port=5000,
)