python 2.7
app.py
# coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')#解决中文乱码问题
from flask import Flask,request,render_template
from flask_sqlalchemy import SQLAlchemy
# 引入wtf表单
from wtforms import PasswordField,StringField,Form
#引入表单验证器
from wtforms.validators import DataRequired
from models import *
class LoginForm(Form):
Username = StringField("Username",validators=[DataRequired()])
Password = PasswordField("Password",validators=[DataRequired])
import os
app =Flask(__name__)
app.config.from_object('config')
#指定数据库URI
app.config['SQLALCHEMY_DATABASE_URI']=os.getenv('DATABASE_URL','mysql+pymysql://root:000000@localhost:3306/test')
db = SQLAlchemy(app)
# 登录模块
@app.route('/',methods=['GET','POST'])
def login():
form = LoginForm(request.form)#表单赋值
message=""#初始化message
if request.method=="POST":
flag = Existed(form.Username.data,form.Password.data)
if flag:
message = "登陆成功!"
else:
message = "账号或密码错误!"
return render_template("login.html",form=form,message=message)
#注册模块
@app.route('/register',methods=['GET','POST'])
def register():
form = LoginForm(request.form) # 表单赋值
message = ""#初始化message
if request.method == 'POST':
flag = Add_user(form.Username.data, form.Password.data)
if flag == False:
message = "用户已存在!"
else:
message = "注册成功!"
return render_template("register.html", form=form, message=message )
if __name__ == '__main__':
app.run(debug=app.config['DEBUG'])
#调试模式
config.py
DEBUG = True
models.py
# coding:utf-8
from app import db
class User(db.Model):
id = db.Column(db.Integer,primary_key=True,index=True)
username = db.Column(db.String(30))
password = db.Column(db.String(30))
def Existed(u,p):
users = User.query.filter_by(username=u).first()
if users:
if users.password==p:
return True
else:
return False
else:
return False
def Add_user(u,p):
if User.query.filter_by(username=u).first():
return False
else:
print u,p
user = User(username=u,password=p)
db.session.add(user)
db.session.commit()
return True
# Add_user('123','123')
templates/login.html
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form method="post">
{{ message }}
<p>{{ form.Username}}</p>
<p>{{ form.Password }}</p>
<input type="submit" value="login">
</form>
</body>
</html>
register/register.html
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="UTF-8">
<title>register</title>
</head>
<body>
<form method="post">
{{ message }}
<p>{{ form.Username}}</p>
<p>{{ form.Password }}</p>
<input type="submit" value="login">
</form>
</body>
</html>