Flask搭建web网站
1. 基础知识
服务端(python处理程序) 客户端(浏览器、手写python_requst请求app)
2. 最简易web框架(账号密码登录界面)
from dataclasses import dataclass
from flask import Flask
from flask import request, render_template, redirect, url_for, session, g
app = Flask(__name__, static_url_path="/")
#app.config['DEBUG'] = True
app.config['SECRET_KEY'] = "sdfklas0lk42j"
@dataclass
class User:
id: int
username: str
password: str
users = [
User(1, "Admin", "123456"),
User(2, "Eason", "888888"),
User(3, "Tommy", "666666"),
]
@app.before_request
def before_request():
g.user = None
if 'user_id' in session:
user = [u for u in users if u.id == session['user_id']][0]
g.user = user
@app.route("/login", methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# 登录操作
session.pop('user_id', None)
username = request.form.get("username", None)
password = request.form.get("password", None)
user = [u for u in users if u.username==username]
if len(user) > 0:
user = user[0]
if user and user.password == password:
session['user_id'] = user.id
return redirect(url_for('profile'))
return render_template("login.html")
@app.route("/shipin")
def profile():
if not g.user:
return redirect(url_for('login'))
return render_template("shipin.html")
@app.route("/logout")
def logout():
session.pop("user_id", None)
return redirect(url_for('login'))
print('----------路由和视图函数的对应关系----------')
print(app.url_map) #打印路由和视图函数的对应关系
app.run(host='0.0.0.0',port=7000,threaded=True)