Django 之 Session的简单使用

作用:

通过设置session,保存用户的登陆信息,实现判断用户是否已经登陆,是否合法访问,并把数据记录写到数据库中,以作保存。

代码(在login函数中)

class Login(View):
    def get(self,request):
        return render(request,"login.html")

    def post(self,request):
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        ret = ldap_auth(user, pwd)  # 调用ldap_auth函数,判断用户输入的用户名和密码是否正确,并根据返回的结果返回浏览器
        if ret[0] == "Login successful":
            rep = redirect("cmdb/home/")
            request.session["is_login"] = "1"          #设置"is_login"键值,正常登陆时,值为1
            request.session["user_name"] = user        #设置"user_name"键值,保存登陆的用户名
            request.session["user_title"] = ret[5]     #设置"user_title"键值,保存用户的职位
            return rep
        else:
            return render(request,"login.html")
class Loout(View):
    def get(self,request):
        request.session.flush()                  #把当前用户的session从浏览器删除,同时删除数据库的session值
        return render(request,"login.html")

Django 之 Session的简单使用

调用方法

1、只要在每个页面或函数中,增加判断“is_login"的session是否等于为1,用作判断该用户是否已经登陆。
Django 之 Session的简单使用

浏览器session保存在cookies中

Django 之 Session的简单使用

转载于:https://blog.51cto.com/12965094/2402957

### Django使用 Session 保持会话的指南 在 Django 中,Session 是一种强大的工具,用于在用户的多次请求之间保存状态信息。以下是关于如何配置和使用 Django Session 的详细介绍。 #### 配置 Session 功能 为了使 Django 支持 Session 功能,需要确保以下两项已正确配置: 1. **`MIDDLEWARE` 设置** 在 `settings.py` 文件中的 `MIDDLEWARE` 列表中添加 `'django.contrib.sessions.middleware.SessionMiddleware'`,这是启用 Session 功能的关键中间件[^1]。 2. **`INSTALLED_APPS` 设置** 同样,在 `settings.py` 文件中的 `INSTALLED_APPS` 列表中添加 `'django.contrib.sessions'` 应用程序。该应用程序提供了必要的数据库模型和其他支持功能来管理 Session 数据[^3]。 完成上述两步后,Django 就可以正常处理 Session 请求了。 --- #### 存储与读取 Session 数据 一旦启用了 Session 功能,就可以通过 `request.session` 对象轻松存储和检索数据。下面是一个简单的例子,展示了如何操作 Session 数据: ```python from django.http import HttpResponse def set_session(request): request.session['key'] = 'value' return HttpResponse('Session 已设置') def get_session(request): value = request.session.get('key', '默认值') return HttpResponse(f'Session 值为: {value}') ``` - 上述代码片段演示了如何向 Session 添加键值对 (`set_session`) 并从中获取值 (`get_session`)。 - 如果指定的键不存在,则可以通过 `.get()` 方法提供一个默认返回值[^4]。 --- #### 删除 Session 数据 如果不再需要某些 Session 数据,可以直接将其删除。例如: ```python def delete_session(request): if 'key' in request.session: del request.session['key'] return HttpResponse('Session 被成功删除') else: return HttpResponse('没有找到对应的 Session 键') ``` 这段代码检查是否存在名为 `'key'` 的 Session 条目,并在存在的情况下将其移除。 --- #### 自定义 Session 行为 除了基本的操作外,还可以自定义一些高级行为,例如调整超时时间或强制清除过期的 Session 记录。 1. **设置全局超时时间** 可以通过修改 `SESSION_COOKIE_AGE` 参数来自定义整个项目的 Session 过期时间(单位为秒)。例如: ```python SESSION_COOKIE_AGE = 1209600 # 默认两周 (1209600 秒) ``` 2. **单个 Session 的个性化超时** 若要针对某个特定用户设定不同的超时策略,可以在视图函数中调用 `set_expiry()` 方法: ```python def custom_timeout(request): request.session.set_expiry(3600) # 半小时后失效 return HttpResponse('设置了个性化的 Session 超时时间') ``` 3. **集成安全扩展** 若希望进一步增强安全性,可考虑引入第三方库如 `django-session-security`。它允许开发者更精细地控制用户会话的安全性,例如通过设置警告时间和自动登出时间实现更高的防护水平[^2]。 --- #### 注意事项 - 默认情况下,Django 使用数据库作为 Session 的存储后端。这意味着每次写入或读取 Session 数据都会涉及一次数据库查询。 - 如果性能成为瓶颈,可以选择其他存储方式,例如缓存(Redis 或 Memcached),只需更改 `SESSION_ENGINE` 和相关参数即可[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值