需求:

1. 用户名: oldboy 密码: oldboy123

2. 用户登录成功之后跳转到列表页面

3. 失败有消息提示,重新登录

4.点击学生名称之后,可以看到学生的详细信息

 

后端:

1 from flask import Flask

2 from flask import request

3 from flask import render_template

4 from flask import redirect

5

6 USER = {'username': 'oldboy', 'password': "oldboy123"}

7

8 STUDENT_DICT = {

9 1: {'name': 'Old', 'age': 38, 'gender': '中'},

10 2: {'name': 'Boy', 'age': 73, 'gender': '男'},

11 3: {'name': 'EDU', 'age': 84, 'gender': '女'},

12 }

13

14 app = Flask(__name__)

15

16

17 @app.route("/login", methods=["GET", "POST"])

18 def login():

19 if request.method == "POST":

20 if request.form["username"] == USER["username"] and request.form["password"] == USER["password"]:

21 return redirect("/student_list")

22 return render_template("login.html", msg="用户名密码错误")

23

24 return render_template("login.html", msg=None) # 如果前端Jinja2模板中使用了msg,这里就算是传递None也要出现msg

25

26

27 @app.route("/student_list")

28 def student():

29 return render_template("student_list.html", student=STUDENT_DICT)

30

31

32 @app.route("/info")

33 def student_info():

34 stu_id = int(request.args["id"])

35 stu_info = STUDENT_DICT[stu_id]

36 return render_template("student.html", student=stu_info, stu_id=stu_id)

37

38

39 app.run("0.0.0.0", 5000, debug=True)

相信写的代码才是最好的

前端:

login.html:

1

2

3

4

5 Welcome to Old Boy EDU

6

7

8

9 用户名:

10 密码:

11

12 {{ msg }}

13

14

15

登录页面前端代码

student_list.html:

1

2

3

4

5 Old Boy EDU

6

7

8 Welcome to Old Boy EDU

9

10

11

12

13

14

15

16

17

18 {% for foo in student %}

19

20

21

22

23

24 {% endfor %}

25

26

idnameoption
{{ foo }}{{ student[foo].name }}详细

27

28

一点儿也不难

student.html

1

2

3

4

5 Old Boy EDU

6

7

8 Welcome to Old Boy EDU

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

idnameagegender
{{ stu_id }}{{ student.name }}{{ student["age"] }}{{ student.get("gender") }}

27

28

29

写不出来说明你没动脑子

 

思考题:

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

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

 

第五篇,完结

查看原文