python+Flask
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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="{{ url_for(‘login_idx‘) }}">请前往登录</a> <dl>
然后在页面用户点击就可以直接跳到登录的页面
以上是关于python+Flask的主要内容,如果未能解决你的问题,请参考以下文章