2023.10.18将flask前后端程序部署在云服务器上
(1)采用蓝图形式构建项目
(2)使用session记录登录状态
部署方式见《2023.10.14在云服务器上部署flask测试环境》
https://blog.csdn.net/leigh_chen/article/details/133834426
1、程序架构
2、程序代码
main.py
import settings
from app import create_app
app = create_app()
app.config.from_object(settings.Dev)
if __name__ == '__main__':
app.run(port=5000, host='0.0.0.0')
setting.py
'''
# 配置文件
# Pro是正式配置
# Dev是开发配置
# Tes是测试配置
# Config用于保存相同的配置
'''
from datetime import timedelta
class Config(object):
DEBUG = False
TESTING = False
SECRET_KEY = "fdgsfdgfg45" # 使用session,为保证安全性,加入一个随机数
SALT = b"dfrwer114565ddf" # 用于md5加密
DATABASE_URI = 'sqlite://:memory:'
PERMANENT_SESSION_LIFETIME = timedelta(minutes=1) # session的存在时长设置为1分钟
class Pro(Config):
DATABASE_URI = 'mysql://user@localhost/foo'
class Dev(Config):
DEBUG = True
class Tes(Config):
pass
init.py
from flask import Flask
from .views.account import account
def create_app():
app = Flask(__name__)
app.register_blueprint(account)
return app
account.py
from flask import Blueprint, render_template, Flask, request, redirect, session
account = Blueprint('account',__name__)
@account.route('/login', methods=['GET','POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
user = request.form.get('user')
pwd = request.form.get('pwd')
if user == 'guest' and pwd == '666':
session['user'] = user
return redirect('/index')
return render_template('login.html', error='用户名或密码错误')
@account.route('/index')
def index():
return render_template('index.html')
index.html
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>hello world!</h1>
</body>
</html>
login.html
<!DOCTYPE html><html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>login</h1>
<form method="post">
<input type="text" name="user" placeholder="user">
<input type="password" name="pwd" placeholder="password">
<input type="submit" value="login">{{error}}
</form>
</body>
</html>
3、运行效果