flask框架实现 用户登录和注册界面,并把注册信息写入数据库
开发环境:
- Ubuntu 20.04
- mysql 8
实现功能:
- 网站首页为用户登录页面
- 若用户登录成功,则跳转到百度
- 若用户登录失败,则显示login failed
- 网站首页有注册页面入口,在注册页面注册完成后,用户数据写入数据库
- 未添加用户名重复功能,只是单纯地注册
flask代码:
from flask import Flask,render_template
from flask import redirect
from flask import url_for
from flask import request
from db import * # 自己写的数据库函数的包
#
# create Flask instance
#
app = Flask(__name__)
#
# route path
#
@app.route('/')
def index():
return redirect( url_for('user_login') )
@app.route('/user_login',methods=['GET','POST'])
def user_login():
# user information submitted methods must be POST
if request.method=='POST': # 注册发送的请求为POST请求
# get the user information that user submitted
username = request.form['username']
password = request.form['password']
# if the information is correct(in our database)
if is_existed(username, password):
return redirect('http://www.baidu.com')
else:
login_massage = "Login Failed"
return render_template('index.html', message=login_massage)
return render_template('index.html')
@app.route("/regiser",methods=["GET", 'POST'])
def register():
if request.method == 'POST':
add_user(request.form['username'], request.form['password'] )
return 'Register Successfully'
return render_template('register.html')
if __name__=="__main__":
app.run()
database函数代码:
mysql与python的交互用的是pymysql,直接pip安装即可。
import pymysql
config = {
"host": "localhost",
"user": "admin",
"password": "123456",
"db": "test"
} # 连接服务器的信息
# create connection
conn = pymysql.connect(**config) # 两个*表示是用字典解释参数(适用于有关键字的参数),一个*表示是用元组解释(适用于无关键字的参数)
# create operator
cur = conn.cursor()
def add_user(username, password):
# sql commands
sql = "INSERT INTO users(username, password) VALUES ('%s','%s')" %(username, password)
# execute(sql)
cur.execute(sql)
# commit
conn.commit() # 对数据库内容有改变,需要commit()
conn.close()
def is_existed(username,password):
sql="SELECT * FROM users WHERE username ='%s' and password ='%s'" %(username,password)
cur.execute(sql)
result = cur.fetchall()
if (len(result) == 0):
return False
else:
return True
首页HTML代码(登录页面)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>index_page</title>
</head>
<body>
<!--整体居中-->
<div style="text-align:center">
<h1>User Login</h1>
<!--jinja2的函数-->
{% if message %} {{message}} {% endif %}
<!--将登陆信息放到一个form中-->
<form method="POST">
<input type="text" name="username" placeholder="username" />
<br/>
<input type="password" name="password" placeholder="password" />
<br/>
<input type="submit" value="submit" />
<input type="reset" value="reset" />
<!--跳转到register的页面-->
<a href="{{ url_for('register') }}">注册</a>
</form>
</div>
</body>
</html>
登陆页面HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>register_page</title>
</head>
<body>
<div style="text-align:center">
<h1>User Register</h1>
<form method="POST">
<input type="text" name="username" placeholder="input username" />
<br/>
<input type="password" name="password" placeholder="input password" />
<br/>
<input type="submit" value="submit" />
<input type="reset" value="reset" />
</form>
</div>
</body>
</html>
大功告成!