首页 > 代码库 > python+Flask

python+Flask

下面我们来分享python用Flask框架来实现用户的注册与登录

首先我们需要搭建APP的环境以及我们需要一个数据库来让用户完成注册,以及用户登录的时候我们需要通过数据库来确认用户身份。这里数据库我用是SQLAlchemy框架

# imports
from flask import Flask, request, session,     redirect, url_for, render_template, flash
import os
# grabs the folder where the script runs
from UserORM import UserORMHelper, Users
from User_Role import UserRoleORMHelper, User_Role
from Role import RoleORMHelper
from ArticleORM import ArticleORMHelper,Article
from datetime import timedelta

basedir = os.path.abspath(os.path.dirname(__file__))

# configuration
DATABASE = ‘role.db‘

DEBUG = True
SECRET_KEY = ‘my_precious‘
USERNAME = ‘admin‘
PASSWORD = ‘admin‘

# defines the full path for the database
DATABASE_PATH = os.path.join(basedir, DATABASE)

# the database uri
SQLALCHEMY_DATABASE_URI = ‘sqlite:///‘ + DATABASE_PATH

# create app
app = Flask(__name__)
app.config.from_object(__name__)
# db = SQLAlchemy(app)
User_helper = UserORMHelper(DATABASE)
User_helper.create_db()

注册

这里我们先来完成一个用户通过注册网页提交username,password完成注册的方法
在这里需要通过‘/signUp‘与一个html进行绑定作为注册页面来供用户输入信息  例:<form action="{{ url_for(‘signUp‘) }}" method="post">
@app.route(‘/signUp‘, methods=[‘GET‘, ‘POST‘]) def signUp(): 在这里我们拿带用户注册需要的username,password user_name = request.form[‘username‘] pass_word = request.form[‘password‘] user = Users(user_name, pass_word) isSuccess = User_helper.addUser(user) 在这里我们判断一下isSuccess来确定用户的信息是否已经完成注册 if isSuccess: 插入成功我们返回一个注册成功的html给用户 return render_template(‘signUpSuccess.html‘) else: 如果判断为不成功,我们也要返回一个注册失败html return render_template(‘signUpLose.html‘)

 在上面之所以那个对isSuccess进行判断是因为我在addUser这个方法上面有相应的操作,比如

    def addUser(self, users):
        # 插入数据
        isSucess=False
        usrsList=self.query_all_with_user_name_password(users)
        if(usrsList and len(usrsList)>0):#用户已经注册
           return False
        self.session.add(users)
        self.session.commit()
        isSucess=True
        return isSucess

 这样子我们在类似的情况可以直接用 if 对它进行判断

接下来我们给和上面方法绑定的html一个打开的端口

@app.route(‘/‘, methods=[‘GET‘, ‘POST‘])
def index():
    """Searches the database for entries, then displays them."""
    return render_template(‘html name‘)

 登录

接下来我们来讲讲登录,登录成功是在客户通过注册页面提交用户信息并且成功插入表里面的前提下再登录页面进行登录才能成功
@app.route(‘/login‘, methods=[‘GET‘, ‘POST‘])
def login():
    """通过登录拿到用户的username,password"""
    user_name = request.form[‘username‘]
    pass_word = request.form[‘password‘]
    user = Users(user_name, pass_word)
"""然后就username,password对表进行查询是否存在"""
    isSuccess= User_helper.query_first_name_password(user)
在这里我们同样判断一下isSuccess有没有值,来确定用户是否存在 if len(isSuccess) > 0:
 在这里呢我们可以简单的把用户信息储存在一个session里面,这样用户进入下个页面就不用重复登录了 session[‘logged_in‘] = True return render_template(‘loginSuccess.html‘) else: return render_template(‘loginFail.html‘)

接下来只要绑定一个html并且通过一个用户打开的端口就OK了

说到端口我们同样可以通过绑定的方法来提供,比如设定一个方法把登录绑定到注册成功页面去

@app.route(‘/login_idx‘, methods=[‘GET‘, ‘POST‘])
def login_idx():
    return render_template(‘登录页面‘)

 然后在html上我们可以这样

    <h1>User registration successful!</h1>
      <a href="http://www.mamicode.com/{{ url_for(‘login_idx‘) }}">请前往登录</a>
            <dl>

 技术分享

然后在页面用户点击就可以直接跳到登录的页面

 


 

 


 

python+Flask