• 第五篇 练习登录查看一个班级的学员


    需求

    1. 用户名: oldboy 密码: oldboy123
    
    2. 用户登录成功之后跳转到列表页面
    
    3. 失败有消息提示,重新登录
    
    4.点击学生名称之后,可以看到学生的详细信息

    后端:

    from flask import Flask
    from flask import request
    from flask import render_template
    from flask import redirect
    
    USER = {'username': 'xiaoming', 'password': "123"}
    
    STUDENT_DICT = {
        1: {'name': 'gangdan', 'age': 38, 'gender': ''},
        2: {'name': 'tiechui, 'age': 73, 'gender': ''},
        3: {'name': 'xiaoming', 'age': 84, 'gender': ''},
    }
    
    app = Flask(__name__)
    
    
    @app.route("/login", methods=["GET", "POST"])
    def login():
        if request.method == "POST":
            if request.form["username"] == USER["username"] and request.form["password"] == USER["password"]:
                return redirect("/student_list")
            return render_template("login.html", msg="用户名密码错误")
    
        return render_template("login.html", msg=None)  # 如果前端Jinja2模板中使用了msg,这里就算是传递None也要出现msg
    
    
    @app.route("/student_list")
    def student():
        return render_template("student_list.html", student=STUDENT_DICT)
    
    
    @app.route("/info")
    def student_info():
        stu_id = int(request.args["id"])
        stu_info = STUDENT_DICT[stu_id]
        return render_template("student.html", student=stu_info, stu_id=stu_id)
    
    
    app.run("0.0.0.0", 5000, debug=True)
    View Code

    前端:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>title</title>
    </head>
    <body>
        <form method="post">
            用户名:<input type="text" name="username">
            密码:<input type="text" name="password">
            <input type="submit" value="登录">
            {{ msg }}
        </form>
    </body>
    </html>
    login.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>title</title>
    </head>
    <body>
    
    <table border="1xp">
        <thead>
            <tr>
                <td>id</td>
                <td>name</td>
                <td>option</td>
            </tr>
        </thead>
        <tbody>
            {% for foo in student %}
                <tr>
                    <td>{{ foo }}</td>
                    <td>{{ student[foo].name }}</td>
                    <td><a href="/info?id={{ foo }}">详细</a></td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
    </body>
    </html>
    student_list.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>title</title>
    </head>
    <body>
    
    <table border="1px">
        <thead>
        <tr>
            <td>id</td>
            <td>name</td>
            <td>age</td>
            <td>gender</td>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td>{{ stu_id }}</td>
            <td>{{ student.name }}</td>
            <td>{{ student["age"] }}</td>
            <td>{{ student.get("gender") }}</td>
        </tr>
        </tbody>
    </table>
    <div><a href="/student_list">返回</a></div>
    </body>
    </html>
    student.html

    思考题:

    1.如果我直接访问 /student_list 和 /student 是不是也可以?

    2.怎么才能在所有的url地址中校验是否登录?

  • 相关阅读:
    谈谈C++新标准带来的属性(Attribute)
    金融数据智能峰会 | 数据规模爆炸性增长,企业如何进行精准决策?云原生数据仓库数据化运营实战分享
    核桃编程:前端可观测性建设之路
    AI和大数据结合,智能运维平台助力流利说提升核心竞争力
    Python静态类型解析工具简介和实践
    盛京剑客系列24:极简估值教程——题记
    Echarts——关系图(人民的名义为例,简化)源码
    UVA10020(最小区间覆盖)
    LA4636积木艺术
    LA4636积木艺术
  • 原文地址:https://www.cnblogs.com/clbao/p/10132184.html
Copyright © 2020-2023  润新知