Flask【第五章】:做一个用户登录之后查看用户信息的小例子

做一个用户登录之后查看用户信息的小例子

一、需求

1.用户名:zjk  密码:zjk

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

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

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

二、开始

1.后端

from flask import Flask
from flask import request
from flask import render_template
from flask import redirect

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

STUDENT_DICT = {
    1: {'name': 'Old', 'age': 38, 'gender': ''},
    2: {'name': 'Boy', 'age': 73, 'gender': ''},
    3: {'name': 'EDU', '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)
相信写的代码才是最好的

2.前端

login.html


"en">

    "UTF-8">
    Welcome to Old Boy EDU


    
"post"> 用户名:"text" name="username"> 密码:"text" name="password"> "submit" value="登录"> {{ msg }}
login.html

student_list.html:


"en">

    "UTF-8">
    Old Boy EDU


Welcome to Old Boy EDU
"2xp">
    
        {% for foo in student %}
            
        {% endfor %}
    
id name option
{{ foo }} {{ student[foo].name }} "/info?id={{ foo }}">详细
一点儿也不难
View Code

student.html:


"en">

    "UTF-8">
    Old Boy EDU


Welcome to Old Boy EDU
"1px">
    
id name age gender
{{ stu_id }} {{ student.name }} {{ student["age"] }} {{ student.get("gender") }}
写不出来说明你没动脑子
View Code

 

思考题:

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

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

转载于:https://www.cnblogs.com/zhangjunkang/p/10235330.html

你可能感兴趣的:(python,前端,后端)