状态保持login()和状态清除logout()

如果需求是注册成功后即表示用户认证通过,那么此时可以在注册成功后实现状态保持

  • login( ) 方法介绍:

    状态保持:
    将通过认证的用户的唯一标识信息(比如:用户ID)写入到当前 session 会话中

  • login( ) 方法:

    Django 用户认证系统提供了 login() 方法
    封装了写入 session 的操作,帮助我们快速实现状态保持

  • login( ) 位置:

    django.contrib.auth.__init__.py 文件中
    login(request, user, backend=None)

login( ) 方法使用

#保存注册数据
try:
    user = User.objects.create_user(username=username, password=password, mobile=mobile)
except DatabaseError:
    return render(request, 'register.html', {'register_errmsg': '注册失败'})

#实现状态保持
login(request, user)

#响应注册结果
return redirect(reverse('contents:index'))

查看状态保持结果

1552472-20190716173508336-1670258223.png

logout()清除session,实现退出登录

  • logout( ) 位置

    django.contrib.auth.__init__.py 文件中

  • logout( ) 方法使用
# 导入: 
from django.contrib.auth import logout

class LogoutView(View):
    """退出登录"""

    def get(self, request):
        """实现退出登录逻辑"""

        # 清理 session
        logout(request)

        # 退出登录,重定向到登录页
        response = redirect(reverse('contents:index'))

        # 退出登录时清除 cookie 中的 username
        response.delete_cookie('username')

        # 返回响应
        return response

由于首页中用户名是从 cookie 中读取的。所以退出登录时,需要将 cookie 中用户名清除

转载于:https://www.cnblogs.com/oklizz/p/11196331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 Flask 中带有状态保持的登录和注册功能,可以结合使用会话(session)和数据库来实现。 首先,您需要设置一个密钥(secret key)来加密会话数据,可以在 Flask 应用中进行如下设置: ```python from flask import Flask app = Flask(__name__) app.secret_key = 'your_secret_key_here' ``` 接下来,您需要创建一个用户数据库,并在注册和登录功能中进行相关操作。这里以使用 SQLite 数据库为例: ```python import sqlite3 from flask import Flask, request, session, redirect, url_for, render_template app = Flask(__name__) app.secret_key = 'your_secret_key_here' # 连接到数据库 conn = sqlite3.connect('users.db') c = conn.cursor() # 创建用户表 c.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, password TEXT NOT NULL)''') conn.commit() @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': # 获取注册表单数据 username = request.form['username'] password = request.form['password'] # 检查用户名是否已存在 c.execute('SELECT * FROM users WHERE username=?', (username,)) existing_user = c.fetchone() if existing_user: return 'Username already exists!' # 插入新用户到数据库 c.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, password)) conn.commit() return redirect(url_for('login')) 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'] # 检查用户名和密码是否匹配 c.execute('SELECT * FROM users WHERE username=? AND password=?', (username, password)) user = c.fetchone() if user: # 将用户信息存储到会话中 session['username'] = username return redirect(url_for('profile')) else: return 'Invalid username or password!' return render_template('login.html') @app.route('/profile') def profile(): # 检查用户是否已登录 if 'username' in session: return f"Welcome, {session['username']}!" else: return redirect(url_for('login')) @app.route('/logout') def logout(): # 清除会话数据 session.clear() return redirect(url_for('login')) if __name__ == '__main__': app.run() ``` 上述代码中,`register` 路由处理函数用于处理用户注册,`login` 路由处理函数用于处理用户登录,`profile` 路由处理函数用于显示用户个人资料。在登录成功后,会将用户名存储到会话中,以便在其他页面中进行状态保持。`logout` 路由处理函数用于注销用户并清除会话数据。 通过以上实现,您可以在 Flask 应用中实现带有状态保持的登录和注册功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值