分享

flask实现一个简单的前后端交互功能...

 昵称45893186 2022-11-12 发布于浙江

总共写了4个文件:

一个主程序demo.py

一写测试数据脚本(直接在终端执行添加测试数据)

一个用来添加数据html文件,login.html

一个用来展示数据的html文件,index.html

写的很low的,临时写的,还有很多不用要的,比如manager,已开始写上去准备命令执行已有数据库的迁移,但是从新创建了一个模型类做简单的操作所以用不到,可以删掉的。而且什么验证都没做,添加数据最好添加有效的数据呀(如  zhangsan   28),用的是form表单提交数据

主程序:

  1. from flask import Flask, render_template
  2. from flask import request
  3. from flask_sqlalchemy import SQLAlchemy
  4. from flask_migrate import Migrate,MigrateCommand
  5. from flask_script import Shell,Manager
  6. app = Flask(__name__)
  7. app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:mysql@127.0.0.1:3306/xx"
  8. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
  9. app.config['WTF_CSRF_ENABLED'] = False
  10. db = SQLAlchemy(app)
  11. migrate = Migrate(app,db)
  12. manager = Manager(app)
  13. manager.add_command('db',MigrateCommand)
  14. class User(db.Model):
  15. __tablename__ = 'users'
  16. id = db.Column(db.Integer, primary_key=True)
  17. name = db.Column(db.String(64), unique=True, index=True)
  18. age = db.Column(db.Integer, default=18)
  19. def __repr__(self):
  20. return 'User:%s'%self.name
  21. @app.route('/')
  22. def demo():
  23. user = User.query.first()
  24. name = user.name
  25. age = user.age
  26. data = {
  27. "name": name,
  28. "age": age
  29. }
  30. return render_template("index.html", data=data)
  31. @app.route('/login', methods=["GET", "POST"])
  32. def login():
  33. if request.method == "POST":
  34. username = request.form.get("username")
  35. userage = request.form.get("userage")
  36. user = User(name=username, age=userage)
  37. db.session.add(user)
  38. db.session.commit()
  39. return render_template("login.html")
  40. if __name__ == '__main__':
  41. db.create_all()
  42. app.run(debug=True)
  43. manager.run()

测试数据:

  1. from .demo import *
  2. user_a = User(name='mayun', age=23)
  3. user_b = User(name='laoma', age=40)
  4. db.session.add_all([user_a, user_b])
  5. db.session.commit()

测试数据是在主程序所在虚拟环境目录下的中终端启用ipython执行即可

然后就是和主程序同目录下创建的templates模板文件下的两个html文件

index.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>首页</title>
  6. </head>
  7. <body>
  8. <table border="1">
  9. <tr>
  10. <th>姓名</th>
  11. <th>年龄</th>
  12. </tr>
  13. <tr>
  14. <td>{{ data.name }}</td>
  15. <td>{{ data.age }}</td>
  16. </tr>
  17. </table>
  18. </body>
  19. </html>

login.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Xiaotaotao</title>
  6. </head>
  7. <body>
  8. <form method="post">
  9. <label>姓名:</label><input type="text" name="username" placeholder="请输入姓名"><br/>
  10. <label>年纪:</label><input type="password" name="userage" placeholder="请输入年纪"><br/>
  11. <input type="submit" value="提交">
  12. </form>
  13. </body>
  14. </html>

 

效果图:查询和数据库渲染到页面和从页面添加数据到数据库都OK

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多