Django 用户登陆访问限制实例 @login_required
在网站开发过程中,经常会遇到这样的需求:用户登陆系统才可以访问某些页面,如果用户没有登陆而直接访问就会跳转到登陆界面。
要实现这样的需求其实很简单:
1、在相应的view方法的前面添加django自带的装饰器@login_required
2、在settings.py中配置LOGIN_URL参数
3、修改login.html表单中的action参数
#views.py fromdjanco.contrib.auth.decoratorsimportlogin_required fromdjango.shortcutsimportrender_to_response @login_required defindex(request): returnrender_to_response('index.html')
#settings.py .... LOGIN_URL='/accounts/login/'#根据你网站的实际登陆地址来设置 ....
如果要使用django默认登陆地址,则可以通过在urls.py中添加如此配置:
#urls.py .... url(r'^accounts/login/',views.login), ....
#login.html{%csrf_token%} 登录系统 username Password
补充知识:Django之禁止特定的IP访问系统
有时候我们上一些网站,或者用爬虫技术去爬,使用的次数很频繁,会被网站记录加入黑名单,当我们再次访问的时候会被提示,你不能访问该网址。
那么这个技术在Django里面如何实现呢?
我搜索了一些方法,找到的资料不多,有一些可能有效,但是没有可以直接运行demo,那么这里就提供一种使用中间件的demo,亲测有效。
自定义一个middleware.py文件,这个文件要在Django的settings.py配置文件中被引用,所以我放在与settings.py同文件夹的目录下。
middleware.py
fromdjango.httpimportHttpResponse fromdjango.utils.deprecationimportMiddlewareMixin#1.10.x classTestMiddleware(MiddlewareMixin): defprocess_view(self,request,view_func,*view_args,**view_kwargs): EXCLUDE_IPS=['192.168.1.54'] if'HTTP_X_FORWARDED_FOR'inrequest.META: ip=request.META['HTTP_X_FORWARDED_FOR'] else: ip=request.META['REMOTE_ADDR'] ifipinEXCLUDE_IPS: returnHttpResponse('您的ip被禁止
')
其中,关于自定义中间件的函数名称例如process_view(),还有其它的例如_init_之类在文档中有具体解释,这里只用到这个。
然后在settings.py中引入这个中间件:
settings.py
[ 'hunter.middleware.TestMiddleware', ]
其中hunter是我的系统的名称,在末尾添加即可。
然后重启我们的Django系统,就可以实现禁止特定IP访问的功能。
注意
这个EXCLUDE_IPS是我手动添加的一个列表,如果想对这个IP进行可持续发展的管理,可以在用户访问系统的时候记录下他们的IP,然后记录在MySQL数据库中,对其中的异常数据进行禁止的处理。
对于访问用户频繁访问、添加黑名单有很好的疗效,这里值得推荐。
以上这篇Django用户登陆访问限制实例@login_required就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。