flask 中使用SQLAlchemy 操作mysql数据库,实现用户注册

#__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开发过程中的代码,防止自己以后忘记了

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值