1、前言
提示:Flask是一个用python语言基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的小应用。
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。
- 一个最小的 Flask 应用如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
2、Flask测试网页(后台框架模板)
2.1 基于layui的后台框架模板的网页
layui(谐音:类 UI) 是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,极易上手,拿来即用。其风格简约轻盈,而组件优雅丰盈,从源代码到使用方法的每一处细节都经过精心雕琢,非常适合网页界面的快速开发。layui 区别于那些基于 MVVM 底层的前端框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,它更多是面向后端开发者,你无需涉足前端各种工具,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。
- test_layui.py:
#***************************************************************
# Purpose: 基于layui的后台框架模板的网页(Flask的web服务器)
# Author: 爱看书的小沐
# Date: 2022-5-24
# Languages: python
# Platform: python 3.9 win64
# OS: Win10 win64
# **************************************************************
from flask import Flask, Response
from flask import render_template, make_response, jsonify, send_from_directory
from io import FileIO
import os
app = Flask(__name__)
#app = Flask(__name__, template_folder="templates")
app.jinja_env.block_start_string = '{%%' # 修改块开始符号
app.jinja_env.block_end_string = '%%}' # 修改块结束符号
app.jinja_env.variable_start_string = '{{{' # 修改变量开始符号
app.jinja_env.variable_end_string = '}}}' # 修改变量结束符号
app.jinja_env.comment_start_string = '##}' # 修改注释开始符号
app.jinja_env.comment_end_string = '##}' # 修改注释结束符号复制代码
# 因为vue和render_template的模板都是用{{ }},所以会冲突,将flask的修改为[[ ]]
##app.jinja_env.variable_start_string = '[['
##app.jinja_env.variable_end_string = ']]'
@app.route('/')
def index():
return render_template('layui-v2.6.9/examples/table.html')
@app.route("/dist/css/<path:path>")
@app.route("/src/css/<path:path>")
def get_css2(path):
data = FileIO("templates/layui-v2.6.9/src/css/{}".format(path))
resp = Response(data, mimetype="text/css")
return resp
@app.route("/dist/<path:path>")
@app.route("/src/<path:path>")
def get_json(path):
data = FileIO("templates/layui-v2.6.9/src/{}".format(path))
resp = Response(data, mimetype="application/javascript")
return resp
@app.route("/json/<path:path>")
def get_binary(path):
data = FileIO("templates/layui-v2.6.9/examples/json/{}".format(path))
resp = Response(data, mimetype="application/json")
return resp
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico'
, mimetype='image/vnd.microsoft.icon')
#<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
if __name__ == '__main__':
app.run(debug = True)
- 运行结果:
2.2 基于layuimini的后台框架模板的网页
layuimini,后台admin前端模板,基于 layui 编写的最简洁、易用的后台框架模板。只需提供一个接口就直接初始化整个框架,无需复杂操作。
界面足够简洁清爽,响应式且适配手机端。
-
一个接口几行代码而已直接初始化整个框架,无需复杂操作。
-
页面支持多配色方案,可自行选择喜欢的配色。
-
支持多tab,可以打开多窗口。
-
支持无限级菜单和对font-awesome图标库的完美支持。
-
失效以及报错菜单无法直接打开,并给出弹出层提示完美的线上用户体验。
-
url地址hash定位,可以清楚看到当前tab的地址信息。
-
刷新页面会保留当前的窗口,并且会定位当前窗口对应左侧菜单栏。
-
支持font-awesome图标选择插件.
-
test_layuimini.py:
#***************************************************************
# Purpose: 基于layuimini的后台框架模板的网页(Flask的web服务器)
# Author: 爱看书的小沐
# Date: 2022-5-30
# Languages: python
# Platform: python 3.9 win64
# OS: Win10 win64
# **************************************************************
from flask import Flask, Response
from flask import render_template, make_response, jsonify, send_from_directory
from io import FileIO
import os
import mimetypes
app = Flask(__name__)
app.jinja_env.block_start_string = '{%%' # 修改块开始符号
app.jinja_env.block_end_string = '%%}' # 修改块结束符号
app.jinja_env.variable_start_string = '{{{' # 修改变量开始符号
app.jinja_env.variable_end_string = '}}}' # 修改变量结束符号
app.jinja_env.comment_start_string = '##}' # 修改注释开始符号
app.jinja_env.comment_end_string = '##}' # 修改注释结束符号复制代码
@app.route('/')
def index():
return render_template('layuimini-2/index.html')
@app.route("/<path:path>")
def get_staticfile(path):
directory = os.getcwd() + "/templates/layuimini-2/"
print(directory)
response = make_response(send_from_directory(directory, path.encode('utf-8').decode('utf-8'), as_attachment=False))
mime_type = mimetypes.guess_type(path)[0]
if path.endswith(".js") :
mime_type = "application/javascript"
response.headers['Content-Type'] = mime_type
print(directory, path, mime_type)
return response
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico'
, mimetype='image/vnd.microsoft.icon')
#<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
if __name__ == '__main__':
app.run(debug = True)
- 运行结果:
2.3 基于Pear Admin Layui的后台框架模板的网页
Pear Admin 是一款开箱即用的前端开发模板,扩展Layui原生UI样式,整合第三方开源组件,提供便捷快速的开发方式,延续LayuiAdmin的设计风格,持续完善的样式与组件的维护,基于异步Ajax的菜单构建,相对完善的多标签页,单标签页的共存.
- test_layuimini.py:
#***************************************************************
# Purpose: 基于Pear Admin Layui的后台框架模板的网页(Flask的web服务器)
# Author: 爱看书的小沐
# Date: 2022-5-30
# Languages: python
# Platform: python 3.9 win64
# OS: Win10 win64
# **************************************************************
from flask import Flask, Response
from flask import render_template, make_response, jsonify, send_from_directory
from io import FileIO
import os
import mimetypes
app = Flask(__name__)
app.jinja_env.block_start_string = '{%%' # 修改块开始符号
app.jinja_env.block_end_string = '%%}' # 修改块结束符号
app.jinja_env.variable_start_string = '{{{' # 修改变量开始符号
app.jinja_env.variable_end_string = '}}}' # 修改变量结束符号
app.jinja_env.comment_start_string = '##}' # 修改注释开始符号
app.jinja_env.comment_end_string = '##}' # 修改注释结束符号复制代码
@app.route('/')
def index():
return render_template('Pear-Admin-Layui-main/index.html')
@app.route("/<path:path>")
def get_staticfile(path):
directory = os.getcwd() + "/templates/Pear-Admin-Layui-main/"
print(directory)
response = make_response(send_from_directory(directory, path.encode('utf-8').decode('utf-8'), as_attachment=False))
mime_type = mimetypes.guess_type(path)[0]
if path.endswith(".js") :
mime_type = "application/javascript"
response.headers['Content-Type'] = mime_type
print(directory, path, mime_type)
return response
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico'
, mimetype='image/vnd.microsoft.icon')
#<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
if __name__ == '__main__':
app.run(debug = True)
- 运行结果:
3、Flask测试网页(其他)
3.1 基于vue的考试题目列表的网页
- test_vue.py:
#***************************************************************
# Purpose: 基于vue的考试题目列表的网页(Flask的web服务器)
# Author: 爱看书的小沐
# Date: 2022-5-30
# Languages: python
# Platform: python 3.9 win64
# OS: Win10 win64
# **************************************************************
import sqlite3,os
from flask import Flask
from flask import jsonify,render_template,send_from_directory
from flask_cors import CORS
app = Flask(__name__)
# CORS(app, supports_credentials=True) #解决跨域问题
cors = CORS(app, resources={r"/api/*": {"origins": "*"}}) #两种模式都行
@app.route('/')
def home():
return render_template('test_vue.html',title='flask + vue example')
@app.route('/api/questions')
def get_questions():
db_path = os.getcwd() + "/static/exam.db"
conn = sqlite3.connect( db_path )
conn.row_factory = sqlite3.Row
cur = conn.cursor()
# sql = 'select * from questions'
sql = 'SELECT * from questions ORDER BY RANDOM () LIMIT 100'
rows = cur.execute(sql).fetchall()
rows = [dict(row) for row in rows]
return jsonify(rows)
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'), 'favicon.ico'
, mimetype='image/vnd.microsoft.icon')
if __name__ == "__main__":
app.run(debug=True, port=5000)
- 运行结果:
<font color=blue size=5> 亲,相关功能正在建设中,请稍等。。。
结语
如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;
╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;
o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!