在Django 模板中使用session

本文介绍了如何在Django模板中有效利用session进行权限管理。最初尝试在每个视图函数中设置用户名和角色,但发现这会导致重复工作。问题在于误解了request.session在HTML中的类型。解决方案是在HTML模板中直接使用{{request.session.username}}和{{request.session.role}}。此外,还探讨了其他尝试,如直接使用字典语法和通过中间件,但未成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

几经周折终于找到了在Django 模板中使用session的方法。

需求

实现权限管理:登录网站后,需要在页面上显示用户名,以及根据用户的角色(也存在于session中)显示不同的菜单。

最初的解决方法

在所有与显示相关的view函数里,定义用户名和角色的变量:

username = request.session["username"]
role = request.session["role"]
t = get_template('自定义的html页面')
c = RequestContext(request,locals())
return HttpResponse(t.render(c))

然后在相应的模板里使用{ {username}}及{ {role}}。但这样做,需要在每个view函数都写一遍,任务量较大,以后还会有其他人增加新的函数,且是重复劳动,所以要寻求一种一劳永逸的解决方法。

原因

不会使用的最基本原因是搞错了request.session在html代码中的类型(request.session在python中是当做字典类型使用的,可以这么用request.session[“username”])。但它在html页面中却是不同的类型,在html代码中写上{ {request.session}},浏览器中显示的内容是:

<djan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值