Flask -- 使用数据库(Sqlite3)、用户注册、登录注销、修改密码

# 使用sqlite数据库import sqlite3from contextlib import closingapp.config.update( DATABASE = 'my.db', #相对于文件所在目录 DEBUG=True,)def connect_db(): return sqlite3....
摘要由CSDN通过智能技术生成

 

# 使用sqlite数据库

import sqlite3
from contextlib import closing app.config.update( DATABASE
= 'my.db', #相对于文件所在目录 DEBUG=True, ) def connect_db(): return sqlite3.connect(app.config['DATABASE']) def init_db(): with closing(connect_db()) as db: with app.open_resource('schema.sql', 'r') as f: db.cursor().executescript(f.read()) db.commit() def get_db(): db = connect_db() cur = db.cursor() return db, cur

# 用户注册

 from wtforms import Form, TextField, PasswordField, BooleanField, validators
 from passlib.hash import sha256_crypt

import gc

class RegistrationForm(Form): 使用flask-WTF表单系统,可以方便地使用逻辑(pip install flask-WTF) username = TextField('Username', [validators.Length(min=4, max=20)]) email = TextField('Email', [validators.Length(min=6, max=50)]) password = PasswordField('Password', [validators.Required(), validators.EqualTo('confirm', message='Passwords must match.')]) confirm = PasswordField('Password Again') accept_tos = BooleanField("<small>I accept it</small>", [validators.Required()]) @app.route('/register/', methods=['POST', 'GET'])
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Flask框架的简单用户登陆注册功能示例代码: ```python from flask import Flask, render_template, request, redirect, session from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.secret_key = "mysecretkey" app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) password = db.Column(db.String(80), nullable=False) @app.route('/') def index(): if 'username' in session: return render_template('home.html', username=session['username']) else: return redirect('/login') @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username).first() if user: return render_template('register.html', error='Username already exists') new_user = User(username=username, password=password) db.session.add(new_user) db.session.commit() session['username'] = username return redirect('/') else: return render_template('register.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = User.query.filter_by(username=username, password=password).first() if user: session['username'] = username return redirect('/') else: return render_template('login.html', error='Invalid login credentials') else: return render_template('login.html') @app.route('/logout') def logout(): session.pop('username', None) return redirect('/login') if __name__ == '__main__': db.create_all() app.run(debug=True) ``` 上述代码实现了以下功能: - 用户可以注册新账户 - 用户可以使用已注册的账户登陆 - 用户可以在登陆后查看主页 - 用户可以在登陆后注销账户 使用SQLite作为数据库,存储用户的用户名和密码。 在应用程序启动时,创建了名为“users.db”的SQLite数据库,并创建了一个名为“User”的表。 在注册页面,用户输入用户名和密码,如果该用户名已存在,则返回错误消息。否则,将新用户添加到数据库中,并将其用户名存储在会话中,以便在注册后自动登陆。 在登陆页面,用户输入用户名和密码。如果用户名和密码数据库中的匹配,则将该用户名存储在会话中,并重定向到主页。否则,返回错误消息。 在主页上,如果用户已登陆,则显示其用户名。否则,重定向到登陆页面。 在注销页面上,将已存储在会话中的用户名删除,并重定向到登陆页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值