Python全系列 教程
3567个小节阅读:5929.7k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
一个良好的项目结构努力可以清晰的看出来各个模块的作用,方便扩展,易于修改
虽然Flask并没有强制要求开发者项目的目录层次结构应该是怎么样的,但是如果我们以包和模块的形式组织项目的话,后期的开发会非常的有条理
未修改的项目
xxxxxxxxxx
|project_name
|--templates # 模板文件
|--static # 静态资源文件
|----js # JS脚本
|----css # 样式表
|----img # 图片
|--app.py # 项目启动控制文件
|--migrations # 数据库迁移目录
manager.py
xxxxxxxxxx
from flask import Flask,request,render_template
from flask_sqlalchemy import SQLAlchemy
from flask.views import MethodView
from flask_migrate import Migrate
app = Flask(__name__)
# 数据库的变量
HOST = '192.168.30.151' # 127.0.0.1/localhost
PORT = 3306
DATA_BASE = 'flask_db'
USER = 'root'
PWD = '123'
DB_URI = f'mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}'
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
# 创建模型类
class User(db.Model):
__tablename__ = 't_user'
id = db.Column(db.Integer,primary_key = True,autoincrement = True)
name = db.Column(db.String(32))
pwd = db.Column(db.String(32))
age = db.Column(db.Integer)
city = db.Column(db.String(32))
def __repr__(self):
return f'<User id={self.id} name={self.name}>'
class LoginView(MethodView):
def _jump(self,msg = None):
return render_template('login.html',msg = msg)
def get(self,msg = None):
return self._jump()
def post(self):
uname = request.form.get('name')
pwd = request.form.get('pwd')
user = User.query.filter(User.name ==uname,User.pwd == pwd).first()
if user:
return '登录成功!'
else:
return self._jump(msg='登录的用户名或密码错误')
app.add_url_rule('/login/',view_func=LoginView.as_view('login'))
Migrate(app,db)
if __name__ == '__main__':
app.run(debug=True)
login.html
xxxxxxxxxx
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录</title>
<link rel="stylesheet" href="{{ url_for('static',filename='css/style.css') }}" type="text/css">
</head>
<body>
<main>
<div id='login'>
<form action="/login/" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="name"/></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="pwd"/></td>
</tr>
<tr>
<td colspan="2"><input class='btn' type="submit" value="登 录"/></td>
</tr>
{% if msg %}
<tr>
<td colspan="2" style="color:red">{{msg}}</td>
</tr>
{% endif %}
</table>
</form>
</div>
</main>
</body>
</html>
style.css
xxxxxxxxxx
html,body,main {
height: 100%;
width: 100%;
margin:0;
padding: 0;
font-size: 25px;
}
body {
background-image: url('/static/img/183201.jpg');
background-position: no-repeat;
background-size:100%;
}
#login {
border: 1px solid white;
border-radius: 5%;
width: 30%;
height: 300px;
background-color: white;
position: relative;
left: 35%;
top: 30%;
text-align: center;
opacity: 0.5;
}
table{
width: 100%;
margin-top: 10%;
}
tr,td{
height:60px;
text-align: center;
}
input{
height:25px;
width: 80%;
}
.btn{
height:35px;
width:55%;
font-size:22px;
border:0px;
border-radius:3px;
font-weight: bold;
background-color: #428bca;
color:white;
}