lihu5841314 发表于 2021-7-5 15:38

小白flask 学习练习 学生管理系统

#导入flask模块
from flask import Flask ,render_template,redirect,request
#使用Flask 对象创建一个app对象
app = Flask(__name__)
students = [
    {'name': 'lihu',   'chinese': '65', 'math': '65', 'english': '50'},
    {'name': 'wangwu', 'chinese': '65', 'math': '65', 'english': '50'},
    {'name': 'niutou', 'chinese': '65', 'math': '65', 'english': '50'},
]

@app.route('/login',methods=['GET','POST'])
def login():
    #登录的功能
    #全栈项目 前后端不分离
    #return实现登录的逻辑
    #request 对象可以拿到浏览器传递给服务器的所有数据
    if request.method == 'POST':
      username = request.form.get('username')
      password = request.form.get('password')
      #登录成功之后,链接数据库,校验账号密码
      print("从服务器接收到的数据",username,password)
      #登录成功之后,应该跳转到管理页面
      return   redirect('/admin')#redirect参数是跳转的路由地址
    returnrender_template('login.html')

@app.route('/admin')
def admin():
    returnrender_template('admin.html',students=students)


@app.route('/add',methods =['GET','POST'])
def add():
    #复制框架源码
    if request.method == 'POST':
      username = request.form.get('username')
      chinese = request.form.get('chinese')
      math = request.form.get('math')
      englisn = request.form.get('english')
      students.append( {'name': username,   'chinese': chinese, 'math': math, 'english': englisn})
      returnredirect('/admin')
    returnrender_template('add.html')

@app.route('/delete',methods=['GET','POST'])
def delete():
   #在后台需要拿到学员的名字
   username = request.args.get('name')
   print(username)
   forstuinstudents:
         ifstu['name'] == username:
             students.remove(stu)
   print(students)
   return redirect('/admin')


@app.route('/change',methods=['GET','POST'])
def change():
    if request.method == 'POST':
      username = request.form.get('username')
      chinese = request.form.get('chinese')
      math = request.form.get('math')
      englisn = request.form.get('english')
      forstuin students:
             if stu['name'] == username:
               stu['chinese'] =chinese
               stu['math'] = math
               stu['englisn'] = englisn
      returnredirect('/admin')
    #先显示学员的数据,然后再浏览修改,提交到服务器保存
    username = request.args.get('name')
    print(username)
    for stu in students:
      if stu['name'] == username:
            #需要在页面渲染学生的成绩数据
            return   render_template('change.html',students=stu)




#需要实现其他的功能(例如退出,查看学生信息)等等其他的功能,该怎么实现
if __name__ == '__main__':
    app.run()
#--------------------------------------------------------------------------------------<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{# 想要一个表格 重点复制框架源码 #}
    <table style="width: 400px;margin: 100pxauto" class="table">
      <thead>
      <tr>
          <th scope="col">姓名</th>
          <th scope="col">语文</th>
          <th scope="col">数学</th>
          <th scope="col">英语</th>
          <th scope="col">操作</th>
      </tr>
      </thead>
      {#
         需要将python对象的数据显示到浏览器上 需要使用 模板语法
         jinja2(flask)numjucks(javascript) moka(django) vue

         jinja2 可以直接在html中使用Python的逻辑用2个大括号进行渲染 {{}}
      #}

      <tbody>
      {% forstu in students %}
      <tr>
            <th>{{ stu.name }}</th>
            <td>{{ stu.chinese }}</td>
            <td>{{ stu.math }}</td>
            <td>{{ stu.english }}</td>
            <td><a href="/change?name={{ stu.name }}">修改</a> <a href="/delete?name={{ stu.name }}">删除</a> </td>
      </tr>
      {% endfor %}
      </tbody>
    </table>
<div style="width: 400px;margin: 10px auto" class="container">
<div class="row">
    <div class="col-4">
      <a href="/add" >新增学员信息</a>
    </div>
</div>
</body>
</html><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>新增学员</title>
    {#   导入框架css #}
    {#<link rel="stylesheet" href="/static/css/bootstrip.css"> #}
</head>
<body>
<form style="width: 400px;margin: 100px auto" method="POST" >
<div class="mb-3">
    <label for="username" class="form-label">姓名</label>
    <input type="text"
         class="form-control"
         id="username"
         name="username"
    >
    <div id="name" class="form-text"></div>

</div>
<div class="mb-3">
    <label for="chinese" class="form-label">语文</label>
    <input type="text" class="form-control" id="chinese" name = "chinese">
</div>
<div class="mb-3">
    <label for="math" class="form-label">数学</label>
    <input type="text" class="form-control" id="math" name="math">
    <div id="emailHelp" class="form-text"></div>
</div>
<div class="mb-3">
    <label for="englisn" class="form-label">英语</label>
    <input type="text" class="form-control" id="englisn" name = "english">
</div>
<div class="mb-3 form-check">
    <input type="checkbox" class="form-check-input" id="exampleCheck1">
    <label class="form-check-label" for="exampleCheck1">记住我</label>
</div>
<button type="submit" class="btn btn-primary">提交</button>
</form>

</body>
</html><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改</title>
    {#   导入框架css #}
    {#<link rel="stylesheet" href="/static/css/bootstrip.css"> #}
</head>
<body>
<form style="width: 400px;margin: 100px auto" method="POST" >
<div class="mb-3">
    <label for="username" class="form-label">姓名</label>
    <input type="text"
         class="form-control"
         id="username"
         name="username"
         value="{{ students['name'] }}"
    >
    <div id="name" class="form-text"></div>
</div>
<div class="mb-3">
    <label for="chinese" class="form-label">语文</label>
    <input type="text"
         class="form-control"
         id="chinese"
         name = "chinese"
         value="{{ students['chinese'] }}"
    >

</div>
<div class="mb-3">
    <label for="math" class="form-label">数学</label>
    <input type="text"
         class="form-control"
         id="math"
         name="math"
         value="{{ students['math'] }}"
    >

    <div id="emailHelp" class="form-text"></div>
</div>
<div class="mb-3">
    <label for="englisn" class="form-label">英语</label>
    <input type="text"
         class="form-control"
         id="englisn"
         name = "englisn"
         value="{{ students['english'] }}"
    >

</div>
<div class="mb-3 form-check">
    <input type="checkbox" class="form-check-input" id="exampleCheck1">
    <label class="form-check-label" for="exampleCheck1">记住我</label>
</div>
<button type="submit" class="btn btn-primary">提交</button>
</form>
</body>
</html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    {#   导入框架css #}
    {#<link rel="stylesheet" href="/static/css/bootstrip.css"> #}
</head>
<body>
<form style="width: 400px;margin: 100px auto" method="POST" >
<div class="mb-3">
    <label for="exampleInputEmail1" class="form-label">账号</label>
    <input type="text" class="form-control" id="exampleInputEmail1" name="username">
    <div id="emailHelp" class="form-text"></div>

</div>
<div class="mb-3">
    <label for="exampleInputPassword1" class="form-label">密码</label>
    <input type="password" class="form-control" id="exampleInputPassword1" name = "password">
</div>
<div class="mb-3 form-check">
    <input type="checkbox" class="form-check-input" id="exampleCheck1">
    <label class="form-check-label" for="exampleCheck1">记住我</label>
</div>
<button type="submit" class="btn btn-primary">登录</button>
</form>

</body>
</html>

lihu5841314 发表于 2021-7-5 15:40

小白选手   占楼

zeknight 发表于 2021-7-6 08:03

学习了,最近也在学习这个。
页: [1]
查看完整版本: 小白flask 学习练习 学生管理系统