首页 > 其他分享 >flask案例

flask案例

时间:2023-04-18 23:25:57浏览次数:29  
标签:return flask app request nid 案例 html user

简单的flask ‘s Demo

#app.py
from flask import Flask, render_template, jsonify, request, redirect, url_for, session
import functools

app = Flask(__name__)
app.secret_key = 'adsa12dsa3456dasdsadsa'

DATA_DICT = {
    1: {"name": "陈三", "age": 73},
    2: {"name": "程思", "age": 84}
}


def auth(func):
    @functools.wraps(func)
    def inner(*args, **kwargs):
        username = session.get('xxx')
        if not username:
            redirect('/login')

    return inner()


@app.route('/login', methods=['GET', 'POST'])
def login():  # put application's code here
    # return jsonify({'code': 100, 'data': [1, 2, 3]})
    # return 'Hello World!'  # HttpRespose
    if request.method == 'GET':
        return render_template("login.html")
    # print(request.form)
    user = request.form.get('user')
    pwd = request.form.get('pwd')
    if user == 'root' and pwd == '123456':
        session['xxx'] = user
        return redirect('/index')

    error = '用户名或密码错误'

    return render_template("login.html", error=error)


@app.route('/index', endpoint='idx')  # endpoint不写默认函数名 (不能重名)
@auth
def index():
    # return '首页'
    data_dict = DATA_DICT
    return render_template('index.html', data_dict=data_dict)


@app.route('/edit', methods=['GET', 'POST'])
@auth
def edit():
    nid = request.args.get('nid')
    nid = int(nid)
    if request.method == 'GET':
        info = DATA_DICT[nid]
        # print(nid)
        # return '修改'
        return render_template('edit.html', info=info)
    user = request.form.get('user')
    age = request.form.get('age')
    DATA_DICT[nid]['name'] = user
    DATA_DICT[nid]['age'] = age
    return redirect(url_for('idx'))


@app.route('/delete/<int:nid>')
@auth
def delete(nid):
    # print(nid)
    del DATA_DICT[nid]
    # return '删除'
    # return redirect('/index')
    return redirect(url_for('idx'))


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

// login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>登录页面</h1>
    <form action="" method="post">
        <input type="text" name="user">
        <input type="text" name="pwd">
        <input type="submit" value="提交"> <span style="color: red" >{{ error }}</span>
    </form>
</body>
</html>
// index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>用户列表</h1>
    <table border="1">
        <thead>
        <tr>
            <th>ID</th>
            <th>用户名</th>
            <th>年龄</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody>
            {% for key, value in data_dict.items() %}
            <tr>
                <td>{{key}}</td>
                <td>{{value['name']}}</td>
                <td>{{value['age']}}</td>
                <td>
                    <a href="/edit?nid={{ key }}">编辑</a>
                    <a href="/delete/{{ key }}">删除</a>
                </td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</body>
</html>
// edit.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>修改</h1>
    <form action="" method="post">
        <input type="text" name="user" value="{{ info.name }}">
        <input type="text" name="age" value="{{ info.age }}">
        <input type="submit" value="提交">
    </form>
</body>
</html>

标签:return,flask,app,request,nid,案例,html,user
From: https://www.cnblogs.com/code3/p/17331598.html

相关文章

  • 【Python毕业设计】基于Python+Flask+MySQL的学生信息管理系统(附完整源码)
    1、项目说明基于python+Flask+mysql的学生信息管理系统项目实战项目需要安装pycharm专业版,mysql数据库以及项目所需的所有模块创建数据库名称db_online_notes,然后执行sql文件生成数据表和数据项目需要安装flask,pymysql以及其他的一些模块安装命令如下:pipinstall-ihttps://......
  • JVM系统优化实践(16):线上GC案例
    您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~列举几个实际使用案例说一下GC的问题。一个高峰期每秒10万QPS的社交APP,个人主页模块是流量最大的那个,而一次个人主页的查询,大概会加载5M的数据。由于并发量太高,导致高峰期年轻代的Eden区被迅速填满,且频繁触发YoungGC,每次YoungGC......
  • 【愚公系列】2023年04月 .NET CORE工具案例-DeveloperSharp的使用(数据库)
    (文章目录)前言DeveloperSharp是一个研发中大型项目必备的系统平台。也是一个低代码平台。它主要包括了如下一些功能:基于Sql语句、存储过程、事务、分页的数据库操作。并几乎支持市面上所有种类的数据库。图片操作。裁剪、缩放、加水印。http请求调用(Post与Get)高效分页We......
  • 分投趣Fintoch系统开发案例智能合约搭建
    在这个技术教程中,你会学习到怎样开发一个end-to-end的dApp。在dApp中,用户可以通过一个智能合约,获取和存储ETH的当前价格。这个教程demo代码存储在Github中。 编译之后,就可以部署到区块链上。 在migrations文件夹下已经有一个1_initial_migration.js部署脚本,用来部署Migrations.so......
  • MyBatis-使用注释方法执行操作案例-2023-04-18
    第一步:编写工具类,注意openSession参数如增加true,则为事务自动提交packagecom.feijian.utils;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.sess......
  • Dockerfile详细使用、docker私有仓库、dockercompose介绍、dockerpose部署flask+redis
    昨日内容#1容器其他操作1dockerstart容器id2dockerstop容器id3dockerrm容器id4dockerrm`dockerps-aq`#正在运行的容器不能删除5dockerexec容器id命令6dockercp宿主机目录容器id:容器目录#目录要存在7docker......
  • flask蓝图、g对象、数据库连接池
    昨日回顾#1cbv使用写一个类继承MethodView,写get,post...类属性decorators=[auth,]可以加装饰器#2cbv执行流程1跟django流程一样2entpint作用路径别名,add_url_rule(view_func=Index.as_view('index'))3为什么entpint不传,是被路由装饰器装饰的函数......
  • flask请求上下文分析(request原理)、wtforms
    上节回顾#1蓝图第一步:导入第二步:实例化得到对象,可以指定static和templates第三步:app中注册蓝图,注册蓝图时,可以指定前缀第四步:使用蓝图,注册路由,注册请求扩展#2g对象当次请求的全局对象,在当次请求中可以放值和取值跟session的区别是session可......
  • flask信号、flask-script、sqlalchemy介绍和快速使用
    昨日内容回顾#1导出项目依赖pipreqs#2函数和方法的区别#3local对象-并发编程中的一个对象,它可以保证多线程并发访问数据安全-本质原理是:不同的线程,操作的是自己的数据-不支持协程#4自己定义local,支持线程和协程#注意点一:try:......
  • flask的sqlalchemy快速插入数据、scoped_session线程安全、基本的增删查改、一对多、
    今日内容sqlalchemy快速插入数据scoped_session线程安全基本的增删改查一对多多对多连表查询1sqlalchemy快速插入数据#sqlalchemy是什么ORM框架,跟其他web框架没有必然联系,可以独立使用#安装,快速使用,执行原生sql#创建表和删除表-不能创建......