python实现登录与注册系统

下面我将详细讲解一下“Python实现登录与注册系统”的攻略,包括以下几个步骤:

  1. 安装所需的库
  2. 创建数据库
  3. 用户注册
  4. 用户登录

安装所需的库

在开始实现登录和注册系统之前,首先需要安装所需的库:flaskflask_sqlalchemy

pip install flask
pip install flask_sqlalchemy

创建数据库

为了存储用户信息,我们需要创建一个名为users.db的数据库,其中包含一个名为users的表,该表包含一个id主键和两个字段:usernamepassword

可以使用以下的代码创建数据库。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
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(255), nullable=False)

用户注册

用户注册是指用户首次使用我们的网站,并创建自己的账户。在用户注册时,我们需要收集用户账户信息,将其存储到数据库中,并返回一个成功或失败的消息。

能够使用以下的代码实现用户注册。

from flask import request, jsonify, redirect, url_for

@app.route('/register', methods=['POST'])
def register():
    username = request.form.get('username')
    password = request.form.get('password')

    if not username or not password:
        return jsonify({'success': False, 'msg': 'Missing fields'}), 400

    user = User.query.filter_by(username=username).first()
    if user:
        return jsonify({'success': False, 'msg': 'User already exists'}), 400

    new_user = User(username=username, password=password)
    db.session.add(new_user)
    db.session.commit()

    return jsonify({'success': True, 'msg': 'User created'}), 201

上述代码通过请求的form获取用户的账号和密码。然后检查用户输入的数据是否已经存在于数据库中,如果存在则返回User already exists错误信息,否则将数据存储到数据库中并返回User created成功信息。

用户登录

在用户注册之后,用户可以使用自己的账户密码登录到我们的网站中。在用户登录时,我们需要验证用户输入的账户和密码是否与数据库中存储的匹配。

能够使用以下的代码实现用户登录。

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    password = request.form.get('password')

    if not username or not password:
        return jsonify({'success': False, 'msg': 'Missing fields'}), 400

    user = User.query.filter_by(username=username).first()
    if not user or user.password != password:
        return jsonify({'success': False, 'msg': 'Invalid username or password'}), 401

    return jsonify({'success': True, 'msg': 'User logged in'}), 200

上述代码通过请求的form获取用户的账号和密码,然后检查是否为空。接着从数据库中查询对应的用户,并检查密码是否匹配。如果成功匹配,则返回User logged in成功信息,否则返回Invalid username or password错误信息。

以上就是Python实现登录和注册系统的完整攻略。有了以上的代码基础,我们就可以在Flask中实现一个简单的登录和注册系统,提供基本的用户认证功能。

下面附上两个示例代码:

示例1:使用Flask提供的默认模板从前端接受注册信息

from flask import request, render_template
@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')

        #实现数据存储、注册逻辑

    return render_template('register.html')

示例2:使用Flask的API从前端接受注册信息

from flask import request, jsonify

@app.route('/register', methods=['POST'])
def register():
    username = request.json.get('username')
    password = request.json.get('password')

    # 实现数据存储、注册逻辑

    return jsonify({'success': True, 'msg': 'User created'}), 201

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现登录与注册系统 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 非常糟糕的 XML 试图用 Python 解析

    【问题标题】:VERY BAD XML trying to parse with Python非常糟糕的 XML 试图用 Python 解析 【发布时间】:2023-04-01 02:08:01 【问题描述】: 我在购买域名后尝试使用 python 解析 xml 输出。到目前为止,我有: #!/usr/bin/python import sys from B…

    Python开发 2023年4月8日
    00
  • Python函数中的全局变量详解

    Python函数中的全局变量详解 在Python函数中,全局变量是在函数外部定义的变量。它们可以用于整个程序,包括函数内和函数外都可以使用。但是,在函数内对全局变量进行修改会导致一些问题,本文将详细讲解。 全局变量的定义 在Python中,如果你想定义全局变量,你需要在最上层的代码中定义它。定义全局变量时,你无需像局部变量那样指定数据类型。 示例代码: # …

    python 2023年6月5日
    00
  • pip报错“OSError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/typing.py’”怎么处理?

    当使用pip安装Python包时,可能会遇到“OSError: [Errno 13] Permission denied: ‘/usr/local/lib/python3.6/dist-packages/pip/_internal/utils/typing.py’”错误。这个错误通常是由以下原因之一引起的: 权限不足:如果您没有足够的权限来安装Python包…

    python 2023年5月4日
    00
  • python+requests+unittest API接口测试实例(详解)

    以下是关于Python+requests+unittest API接口测试实例的详细攻略: Python+requests+unittest API接口测试实例 Python是一种流行的编程语言,可以于编写API接口测试。requests库是一个流行的HTTP库,用于向Web服务器发送HTTP请求和接收响应。unittest是Python标准中的一个测试框架…

    python 2023年5月14日
    00
  • Python海象运算符超详细讲解

    Python海象运算符超详细讲解 什么是海象运算符? Python 3.8新增了一个新的运算符:=,被称为海象运算符(英文为Walrus Operator)。这个运算符的作用是简化代码中变量赋值和表达式计算的过程。 如何使用海象运算符? 在基本的使用中,可以把海象运算符看作是一种特殊的赋值运算符,它把表达式的值赋给变量,并返回该值。具体用法如下: varia…

    python 2023年6月5日
    00
  • Python Lambda 可变性

    【问题标题】:Python Lambda MutabilityPython Lambda 可变性 【发布时间】:2023-04-06 03:39:02 【问题描述】: class TestClass(object): def __init__(self): self.value = 100 self.x = lambda: self.value.__add_…

    Python开发 2023年4月6日
    00
  • 如何使用 python 代码将包含键值对的文件的所有键放在引号中? [关闭]

    【问题标题】:How can I put all keys of file that contain key value pairs in quotes using python code? [closed]如何使用 python 代码将包含键值对的文件的所有键放在引号中? [关闭] 【发布时间】:2023-04-04 17:23:02 【问题描述】: 我有…

    Python开发 2023年4月6日
    00
  • 如何使用多处理的python检查网页是否存在

    【问题标题】:How to check if webpage are alive with python with multiproccessing如何使用多处理的python检查网页是否存在 【发布时间】:2023-04-06 02:36:01 【问题描述】: 我有一个 url 列表(大约 25k),我正在尝试检查它们是否还活着(200 响应)。想要使用 …

    Python开发 2023年4月6日
    00
合作推广
合作推广
分享本页
返回顶部