首页 > 编程语言 >【Web开发】Python实现Web服务器(Flask测试后台框架模板)

【Web开发】Python实现Web服务器(Flask测试后台框架模板)

时间:2022-10-22 20:37:02浏览次数:61  
标签:__ Web string Python app Flask env path

在这里插入图片描述

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 底层的前端框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,它更多是面向后端开发者,你无需涉足前端各种工具,只需面对浏览器本身,让一切你所需要的元素与交互,从这里信手拈来。 image.png

  • 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??? 如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡) 感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

标签:__,Web,string,Python,app,Flask,env,path
From: https://blog.51cto.com/u_15800063/5780969

相关文章

  • weblogic洞若观火第5篇之手工操作管理节点
    引言上一篇文章,主要讲解:weblogic的手工创建域。在本篇文章中,我们接着介绍:weblogic的手工操作管理节点AdministrationServer。管理节点AdministrationServer管理服务器是......
  • python内置方法__getitem__,__delitem__,__setitem__
    classFoo:def__init__(self,name):self.name=namedef__getitem__(self,item):print('getitem')print(item)returns......
  • Python列表操作
    目录导航:1.for循环遍历列表2.range()函数3.对数字列表的统计操作4.列表切片5.复制列表6.元组的定义7.修改元组  1.for循环遍历......
  • Python第七章实验报告
    一.实验名称:《零基础学Python》第7章面向对象程序设计二.实验环境:IDLEShell3.9.7三.实验内容:5道实例、4道实战四.实验过程:实例01创建大雁类并定义飞行方法点......
  • (数据科学学习手札145)在Python中利用yarl轻松操作url
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1简介大家好我是费老师,在诸如网络爬虫、web应用开发等场景中,我们需要利......
  • python面试-理论面试题
    1.变量与值在内存中的关系变量通过变量指针,引用对象变量指针指向具体对象的内存空间,取对象的值。1.对象,类型已知,每个对象都包含一个头部信息(头部信息:类型标识符和引用......
  • 【Python】第3章-18 统计一行文本的单词个数
    随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来。如没有10个英文字母,显示信息“notfound”输入格式:在一行中输入字符串输出格式:在一行中......
  • 【Python】第3章-16 删除重复字符
    本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。输入格式:输入是一个以回车结束的非空字符串(少于80个字符)。输出格式:输出去重排......
  • Python教程Day08-元组
    元组一、应用场景思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改。num_list=[10,20,30]num_......
  • Python教程Day09-字典
    字典一、应用场景​​思考1​​:如果有多个数据,例如:'Tom','男',20,如何快速存储?答:列表list1=['Tom','男',20]​​思考2​​:如何查找到数据'Tom'?答:查找到下标为0的数据......