在Django中限制已登录用户的访问的方法
2015-07-23 00:00
766 查看
有很多原因需要控制用户访问站点的某部分。
一个简单原始的限制方法是检查 request.user.is_authenticated() ,然后重定向到登陆页面:
from django.http import HttpResponseRedirect def my_view(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/?next=%s' % request.path) # ...
或者显示一个出错信息:
def my_view(request): if not request.user.is_authenticated(): return render_to_response('myapp/login_error.html') # ...
作为一个快捷方式, 你可以使用便捷的 login_required 修饰符:
from django.contrib.auth.decorators import login_required @login_required def my_view(request): # ...
login_required 做下面的事情:
如果用户没有登录, 重定向到 /accounts/login/ , 把当前绝对URL作为 next 在查询字符串中传递过去, 例如: /accounts/login/?next=/polls/3/ 。
如果用户已经登录, 正常地执行视图函数。 视图代码就可以假定用户已经登录了。
=
相关文章推荐
- Django中对通过测试的用户进行限制访问的方法
- 在Django中管理Users和Permissions以及Groups的方法
- 在Django的模板中使用认证数据的方法
- 详解Django中的权限和组以及消息
- 简介Django框架中可使用的各类缓存
- Django中的CACHE_BACKEND参数和站点级Cache设置
- 详解Django框架中的视图级缓存
- Django框架下在URLconf中指定视图缓存的方法
- VIEWGOOD(远古)助力警官学院信息化平台建设
- socket协议下如何缓存图片--推荐EGOCache
- HDU 1934 Minimum Inversion Number(树状数组,线段树)
- poj 2762 Going from u to v or from v to u?
- golang+websocket
- django 1.8 官方文档翻译: 2-5-1 管理器 (初稿)
- HDU 3966 Aragorn's Story(树链剖分+线段树区间更新+手动扩大内存)
- go语言实现线程池
- 在Django中使用Sitemap的方法讲解
- Ubuntu下最好用的词典Golden Dict设置支持有道
- django-restful请求的访问限制
- HDU 1166 敌兵布阵(线段树)