1. 用到的技术

1.1 导模块

from flask import Flask, render_template, jsonify, redirect, request, url_for, session

1.2 模块介绍

1.3 flask路由系统

1.3.1 普通使用

@app.route('/delete')

1.3.2 带有名分组

@app.route('/edit/<string:nid>', methods=['GET', 'POST'])  # 有名分组 默认string

1.3.3 带请求限制

@app.route('/login', methods=['GET', 'POST'])  # 默认支持get,需要手动添加post

1.3.4 带别名,默认别名是函数名

@app.route('/index', endpoint='index')  # 起别名,不写默认函数名称

1.3.5 路由其他参数(默认string)

DEFAULT_CONVERTERS = {'default':          UnicodeConverter,'string':           UnicodeConverter,'any':              AnyConverter,'path':             PathConverter,'int':              IntegerConverter,'float':            FloatConverter,'uuid':             UUIDConverter,
}

1.3.6 路由的本质

本质就是:app.add_url_rule()路由加载的源码流程
-将ur1和函数打包成为rule对象
-将ru1e对象添加到map对象中。
- app.url_map = map对象endpoint:如果不写默认是函数名,endpoint不能重名# 一般使用第一种
@app.route('/index')
def index():return render_template(' index.html ')# 第二种
def home():return render_template(' index.html ')
app.add_url_rule('/home', 'home', home)|

1.3.7 app.add_url_rule参数

@app.route和app.add_url_rule参数:
rule:URL规则
view_func:视图函数名称
defaults = None, 默认值, 当URL中无参数,函数需要参数时,使用defaults = {'k': 'v'}
为函数提供参数
endpoint = None, 名称,用于反向生成URL,即: url_for('名称')
methods = None, 允许的请求方式,如:["GET", "POST"]
#对URL最后的 / 符号是否严格要求,默认严格,False,就是不严格
strict_slashes = None'''@app.route('/index', strict_slashes=False)#访问http://www.xx.com/index/ 或http://www.xx.com/index均可@app.route('/index', strict_slashes=True)#仅访问http://www.xx.com/index'''
#重定向到指定地址
redirect_to = None, '''@app.route('/index/<int:nid>', redirect_to='/home/<nid>')'''

1.4 获取提交的数据

# 1. get请求
nid = request.args.get('nid')
# 2. post请求
username = request.form.get('username')

1.5 返回数据

1.5.1 返回时的格式

return render_template('login.html', error='用户名错误')
return render_template('login.html', **{'error':'xxx','age':'xxx'})

1.5.2 坑1,出现找不到模板,解决办法

  • 项目下面是否有templates文件夹,你的html文件是否放进了里面;
  • templates文件夹是否和你运行的py文件在同一级目录;
  • render_template('***.html')这里面的名字是否正确,别打错了;
  • app = Flask(__name__, template_folder='templates') 在最开始的这句话中,template_folder后面一定要跟上templates;

1.6 session&装饰器

1.6.1 导入&使用

import functools
from flask import session# flask使用session需要,传入一个secret_key,flask会生成一个key返回给前端,类似于cookie存储
app.secret_key = 'lfsakhfnednlasdjmcls'def auth(func):@functools.wraps(func)def inner(*args, **kwargs):if session.get('username'):# print(session.get('username'))ret = func(*args, **kwargs)return retreturn redirect(url_for('login'))return inner@app.route('/index', endpoint='index')  # 起别名,不写默认函数名称
@auth
def index():"""首页"""return render_template('index.html', data_dict=DATA_LIST)

1.6.2 装饰器的使用方法

@app.before_requestdef
def func():print('xxx')def x1():print('xxx')
x1.app.before_request(x1)

1.7 request介绍

  • django的请求处理是逐一封装和传递;
  • flask的请求是利用上下文管理来实现的。

1.8 django/flask介绍

  • django是个大而全的框架,flask是一个轻量级的框架。 django内部为我们提供了非常多的组件:
orm / session / cookie / admin / form / modelform/路由/视图/模板/中间件/分页/ auth / contenttype/缓存/信号/多数据库连接
  • flask框架本身没有太多的功能:路由/视图/模板(jinja2)/session/中间件,第三方组件非常齐全。

2. 快速搭建管理系统

2.1 基本使用

from flask import Flask# 起一个名字
app = Flask(__name__)# 配置路由
@app.route('/index')
def index():return 'hello word'if __name__ == '__main__':# 启动app.run()

2.2 完整版

2.2.1 py

import functools
from flask import Flask, render_template, jsonify, redirect, request, url_for, sessionapp = Flask(__name__)  # 默认 template_folder='templates'
# 模拟数据
DATA_LIST = {'1': {'name': 'a', 'age': 32},'2': {'name': 'a', 'age': 64},}
# flask使用session需要,传入一个secret_key,flask会生成一个key返回给前端,类似于cookie存储
app.secret_key = 'lfsakhfnednlasdjmcls'def auth(func):@functools.wraps(func)def inner(*args, **kwargs):if session.get('username'):# print(session.get('username'))ret = func(*args, **kwargs)return retreturn redirect(url_for('login'))return inner@app.route('/login', methods=['GET', 'POST'])  # 默认支持get,需要手动添加post
def login():"""登录"""# render_template,  # 类似与django中国的render# jsonify, # 类似与django中国的JsonResponse# url_for 别名if request.method == 'GET':return render_template('login.html')username = request.form.get('username')password = request.form.get('password')if username == '1' and password == '1':session['username'] = usernamereturn redirect('/index')return render_template('login.html', error='用户名错误')@app.route('/index', endpoint='index')  # 起别名,不写默认函数名称
@auth
def index():"""首页"""return render_template('index.html', data_dict=DATA_LIST)@app.route('/edit/<string:nid>', methods=['GET', 'POST'])  # 有名分组 默认string
@auth
def edit(nid):"""编辑"""if request.method == 'GET':user_dic = DATA_LIST.get(nid)# print(user_dic) # {'name': 'a', 'age': 32}return render_template('edit.html', user_dic=user_dic)name = request.form.get('username')age = request.form.get('age')DATA_LIST[nid]['name'] = nameDATA_LIST[nid]['age'] = agereturn redirect('/index')@app.route('/delete')
@auth
def delete():"""删除"""nid = request.args.get('nid')print(nid)  # 2del DATA_LIST[nid]return redirect(url_for('index'))if __name__ == '__main__':app.run()

2.2.2 login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录</title>
</head>
<body>
<form method="post"><p>用户名:<input type="text" name="username"></p><p>密码:<input type="password" name="password"></p>{{ error }}<input type="submit" value="提交">
</form>
</body>
</html>

2.2.3 index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div><div class="bs-example" data-example-id="hoverable-table"><div class="panel panel-info"><div class="panel-heading"><h3 class="panel-title">xx管理系统</h3></div><div class="panel-body"><table class="table table-hover"><thead><tr><th>序号</th><th>名称</th><th>年龄</th><th>操作</th></tr></thead><tbody>{% for key,item in data_dict.items() %}<tr><th scope="row">{{ key }}</th><td>{{ item.name }}</td><td>{{ item["age"] }}</td><td><a href="/edit/{{ key }}">编辑</a>|<a href="/delete?nid={{ key }}">删除</a></td></tr>{% endfor %}</tbody></table></div></div></div>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</body>
</html>

2.2.4 edit.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>编辑</title>
</head>
<body>
<form method="post"><p>用户名:<input type="text" name="username" value="{{ user_dic.name }}"></p><p>密码:<input type="text" name="age" value="{{ user_dic.age }}"></p><input type="submit" value="提交">
</form>
</body>
</html>

3. 截图

基于Flask快速搭建一个管理系统相关推荐

  1. 基于halo快速搭建一个属于你自己的博客网站

    基于halo快速搭建一个属于你自己的博客网站 公众号 前置条件 JDK安装 下载halo配置文件 下载halo的启动jar 验证启动 公众号 前置条件 首先你需要有一台自己的服务器,比如你去各类云上面 ...

  2. python 极速后台开发框架_基于FastAdmin快速搭建后台管理系统

    [课程简介] FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架.本课程从安装.架构.一键生成.数据库.控制器.模块.前端组件等方面,对如何使用FastAdmin框架 ...

  3. test.php创建,基于phpstudy简单快速搭建一个php程序

    原标题:基于phpstudy简单快速搭建一个php程序 人人都是程序员,希望在零碎的阅读时间里,给您一些技术提升. 1 安装phpstudy 通过以下链接download.csdn.net/downl ...

  4. 如何快速搭建一个基于FengMap的地图导航应用?

    蜂鸟视图自成立以来就专注于提供从地图数据生产.地图编辑运维.地图应用开发的全流程专业技术产品与服务.长期的市场考验与技术迭代升级,产品功能接口较全面,性能表现优异. 日前,蜂鸟视图正式向海内外开发者用 ...

  5. 如何快速搭建一个属于自己的网站?

    随着互联网的发展,网站建设的技术也越来越成熟,建站的方式也愈加丰富和多样.同时,互联网时代,无论是组织还是个人,无论是大企业还是小社团,拥有一个属于自己的网站,必不可少. 可是,不同的组织.不同的人, ...

  6. 创建微服务架构的步骤_如何快速搭建一个微服务架构?

    原标题:如何快速搭建一个微服务架构? 微服务火了很久,但网上很少有文章能做到成熟地将技术传播出来,同时完美地照顾"初入微服务领域人员",从 0 开始,采用通俗易懂的语言去讲解微服务 ...

  7. 阿里云上基于WordPress快速搭建个人博客

    阿里云上基于WordPress快速搭建个人博客 文章目录 阿里云上基于WordPress快速搭建个人博客 一.服务器环境: 二.环境部署: 1.重置实例密码 2.链接ECS服务器 3.安装Apache ...

  8. 使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)

    最近也是临近期末了,各种的期末大作业,后台管理也是很多地方需要用到的,为了方便大家能快速上手,快速搭建一个简单的后台管理,我花了两天时间整理了一下 我会从0开始介绍,从数据库的设计到前端页面的引入最后 ...

  9. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

最新文章

  1. 求一个指定点对的路径上的最大边权或最小边权(转)
  2. [转]Vi 教程(Unix行编辑器)
  3. HP Z840 工作站配sSAS Raid 安装 Ubuntu 16.04 系统
  4. js template换行_JavaScript字符串换行符?
  5. 【PTA天梯赛CCCC -2017决赛L2-3】图着色问题 (25 分)(图染色)
  6. 对象json字符串数组 java对象,java把json的字符串转换为json对象和数组
  7. FastDFS多tracker配置
  8. Ghost XP SP2 64位 纯净珍藏版
  9. .NET架构设计、框架设计系列文章总结
  10. uw计算机专业大一课程,大一新生选课攻略和你不能错过的小技巧
  11. matlab中fix函数是啥,fix函数(函数fix是什么意思)
  12. 三十九、如何单独发布jar包
  13. 【已解决】Android Studio下,gradle project sync failed 错误
  14. android仿咸鱼底部导航栏,Flutter沉浸式状态栏/AppBar导航栏/仿咸鱼底部凸起导航栏效果...
  15. Git 最著名报错 “ERROR: Permission to XXX.git denied to user”终极解决方案
  16. 微信小程序产品定位及功能介绍
  17. 你感受过VR视频故事线吗?适用于哪些方面?
  18. NVIDIA Tesla T4 检修纪录之基础安装问题
  19. 分享基于JavaEE移动平台的企业级房地产ERP采购系统全程开发实录
  20. Python五分钟教你制作一个太阳

热门文章

  1. K8s - 札记 - 脑裂
  2. 电脑用久了会变卡怎么办?让电脑变得流畅方法(不要等到蓝屏等无法挽救在着急)
  3. 蓝鲸cmdb平台架构
  4. 利用第三方服务平台实现简单的短信验证功能
  5. Spring注解驱动
  6. 7-151 计算存款利息
  7. HTML特效代码汇总
  8. OS学习笔记-5(清华大学慕课)计算机体系结构与内存层次
  9. window引导配置bcdedit
  10. VCS+verdi /dve 仿真环境搭建-问题汇总