1. 程式人生 > >python+Flask

python+Flask

flask框架 sel rect 查詢 bsp __name__ basedir name req

下面我們來分享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