基于Flask快速搭建一个管理系统

这篇具有很好参考价值的文章主要介绍了基于Flask快速搭建一个管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 ret
        return 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, session

app = 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 ret
        return 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'] = username
        return 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'] = name
    DATA_LIST[nid]['age'] = age
    return redirect('/index')


@app.route('/delete')
@auth
def delete():
    """删除"""
    nid = request.args.get('nid')
    print(nid)  # 2
    del 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快速搭建一个管理系统文章来源地址https://www.toymoban.com/news/detail-414621.html

到了这里,关于基于Flask快速搭建一个管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python毕业设计】基于Python+Flask+MySQL的学生信息管理系统(附完整源码)

    1、项目说明 基于python+Flask+mysql的学生信息管理系统项目实战 项目需要安装pycharm专业版,mysql数据库以及项目所需的所有模块 创建数据库名称db_online_notes,然后执行sql文件生成数据表和数据 项目需要安装 flask,pymysql以及其他的一些模块 安装命令如下: pip install -i https://pypi

    2023年04月18日
    浏览(37)
  • 使用eclipse创建一个图书管理系统(1)-----搭建架构

    目录 思维导图: 图书管理系统的创建: 第一步:搭建框架-------使用者 第二步:搭建框架------被使用者 第三步:操作方法 第四步:main函数  前言: 昨天学了一下使用Java语言来写一个图书管理系统,于是今天写一篇博客作为一个小笔记巩固一下自己学到的知识!博主也是刚

    2024年02月02日
    浏览(34)
  • React--》从零开始搭建一个文章后台管理系统

    目录 项目准备 项目搭建 scss预处理器的使用 配置基础路由 组件库antd的使用 开发者工具的安装 登录模块 基本样式搭建 创建表单结构 获取表单数据并进行相关登录操作 对登录模块的token进行相关处理 路由鉴权实现 后台页面模块 基本页面结构搭建 菜单高亮显示 展示个人信

    2023年04月17日
    浏览(46)
  • 只需三步,教你搭建一个进销存管理系统!

    如果你常常面临: 进销存软件功能不全、功能冗余、价格昂贵,性价比不高的情况—— 可以考虑使用【零代码搭建】了! 在简道云可以根据自身需求快速搭建出进销存管理系统。相比较其他标准进销存软件,用简道云搭建进销存具备以下优势: 功能灵活: 可以对进销存模

    2024年02月06日
    浏览(75)
  • 身为一个后端程序员如何快速制作后端管理系统的UI

    我的专业领域在后端开发上,前端我仅仅是熟悉,但是要从头开发一个前端UI界面有点难为人了。那么身为一个后端程序员我们怎么来开发后端管理系统UI界面呢? 市面上有很多后端管理系统的UI模版,但我推荐的layui + lauyimini,虽然技术偏老,也没咋维护了,但是上手简单呀

    2024年02月11日
    浏览(47)
  • 一步步完整搭建一个图纸管理系统(Django+Vue3)

    需要将终端改成虚拟环境的解释器后,简单试运行: 由于我们把子项目都放在apps里面了(方便统一管理)所以注册要加入一段配置 一定要注意格式 (1)安装pymysql (2)gveInformationSystem/settings中进行相关配置 (3)需要在init.py导入pymysql (在:apps/DrawingManagementSystem/models.py)

    2024年02月06日
    浏览(45)
  • python基于flask企业会议交换机设备维修批量运维管理系统设计与实现6py09

    Python 中存在众多的 Web 开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的,大概也就是 Flask 和 Django 了解决的思路: (1)通过进行需求分析,建立用例模型,上网查找资料,摸清业务流程。 (2)通过运用vue 技术进行界面的设计,上网搜

    2024年02月13日
    浏览(42)
  • 使用vue3搭建一个CRM(客户关系管理)系统

    目录 1. 需求分析 2. 设计 3. 技术选型 4. 开发环境搭建 5. 前端开发 6. 后端开发 7. 数据库搭建 8. 测试 9. 部署 10. 维护和迭代 总结 搭建一个CRM(客户关系管理)系统是一个复杂的项目,涉及到需求分析、设计、开发、测试和部署等多个阶段。以下是一个简化的指南,帮

    2024年04月16日
    浏览(50)
  • Vue3 + Element-UI 搭建一个后台管理系统框架模板

    本文将介绍如何基于Vue3和element-ui搭建一个后台管理系统框架模板。我们将详细讲解代码流程,并提供详细的说明。 Vue3 Element-ui Axios 本文假设读者已经熟悉Vue3和Element-ui的基本使用方法,并且对Axios有一定的了解。 步骤1:创建Vue3项目 我们可以使用Vue CLI来创建一个Vue3项目,

    2023年04月26日
    浏览(119)
  • 分享一个基于easyui前端框架开发的后台管理系统模板

    这是博主自己在使用的一套easyui前端框架的后台管理系统模版,包含了后端的Java代码,已经实现了菜单控制、权限控制功能,可以直接拿来使用。 springboot + mybatis + mybatis-plus实现的增删查改完整项目,前端使用了easyui前端框架。 https://gitee.com/he-yunlin/easyui-crud.git 目录 功能介

    2024年01月19日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包