#__init__.py
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
views.py
from flask import render_template,url_for,request,flash,redirect,session
from flask_login import login_user, logout_user, current_user, login_required
import time
import sys
from app import app,db,lm
from models import User,Category,Duty
#用户注册
@app.route('/register' ,methods=["GET","POST"])
def register():
form = Register()
if request.method=='GET':
return render_template('register.html',form=form)
elif request.method=='POST':
if form.validate_on_submit():
user = User.query.filter_by(phone=form.phone.data).first()
if user:
flash(message='Phone number has been registered',category='danger')
return render_template('register.html',form=form)
else:
if form.password.data == form.repassword.data:
add_user = User(form.username.data,form.phone.data,form.password.data,time.time())
db.session.add(add_user)
db.session.commit()
flash(message='Register successfully, please login',category='success')
return redirect('/login')
else:
flash(message='The passwords entered twice are not the same',category='danger')
return render_template('register.html',form=form)
else:
return 'None'
model.py
from app import db
from werkzeug.security import generate_password_hash
from werkzeug.security import check_password_hash
import json,uuid
PROFILE_FILE = "profiles.json"
class User(db.Model):
__tablename__ = "du_user"
user_id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True)
phone = db.Column(db.String(64), unique=True)
password = db.Column(db.String(64), unique=True)
create_time = db.Column(unique=True)
def __init__(self, username, phone, password, create_time):
self.username = username
self.phone = phone
self.password = password
self.create_time = create_time
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return unicode(self.user_id)
def __repr__(self):
return '<User %r>' % (self.username)
'''
is_authenticated方法是一个误导性的名字的方法,通常这个方法应该返回True,除非对象代表一个由于某种原因没有被认证的用户。
is_active方法应该为用户返回True除非用户不是激活的,例如,他们已经被禁了。
is_anonymous方法应该为那些不被获准登录的用户返回True。
最后,get_id方法为用户返回唯一的unicode标识符。我们用数据库层生成唯一的id。
'''
forms.py 用来渲染表单
#coding:utf-8
from flask_wtf import FlaskForm###从Flask-WTF扩展导入Form基类
from wtforms import IntegerField ,StringField, PasswordField, BooleanField,TextField,TextAreaField, SubmitField###从WTForms包中导入字段类
from wtforms.validators import Required,Length,Email, DataRequired###从WTForms导入验证函数
class LoginForm(FlaskForm):
phone = IntegerField('Phone', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
remember_me = BooleanField('remember me', default=False)
submit = SubmitField('LOGIN')
class Register(FlaskForm):
phone = IntegerField('Phone', validators=[DataRequired()])
username = StringField('User Name', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
repassword = PasswordField('RePassword', validators=[DataRequired()])
submit = SubmitField('REGISTER')
class AboutMeForm(FlaskForm):
describe = TextAreaField('about me', validators=[
Required(), Length(max=140)])
submit = SubmitField('YES!')
前端页面
{% extends "layout.html" %}
{% import 'bootstrap/wtf.html' as wtf %}
{% block body %}
<div class="container">
<div class="page-header">
<div class="row">
<div class="list-group">
<a class="list-group-item active"><h4 class="list-group-item-heading">Register</h4></a>
</div>
<div class="col-md-6">
{{ wtf.quick_form(form) }}
</div>
</div>
</div>
</div>
{% endblock %}
此文用来记录flask开发过程中的代码,防止自己以后忘记了