Django身份认证--禁止匿名登录

项目已经实现了登录和注销功能,但还是没起作用,因为注销后还是可以直接通过url:http://127.0.0.1:8000/manage/main/ 访问到管理界面。所以还是需要进行访问控制。
查了下资料,在Django里面,最简单的作法只需要在相应的视图函数前面增加@login_required修饰符即可:

from django.contrib.auth.decorators import login_required #导入包

然后在视图函数前增加修饰符:

@login_required  #表示需要登录才能访问本页面,禁止匿名登录
def gotomanage(request):
    return render(request, 'schemes/tradescheme.html')

说明:如果用户还没有登录,默认会跳转到‘/accounts/login/’。这个值可以在settings文件中通过LOGIN_URL参数来设定。
因此在urls.py中设置:

from django.contrib.auth.views import login #先导入此包

url(r'^accounts/login/$', login, {'template_name': 'login.html'}), # 用自己的登录界面来代替原来的默认值

说明:
之前查到的资料是用这种形式:

url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),

但报错:TypeError: view must be a callable or a list/tuple in the case of include().
原因是:django1.10 后url中的第二个参数不再支持使用字符串的方式,而是要用真正的视图函数名称来代替。
Stack Overflow上的原话:

String reference is deprecated in Django 1.10. So, Django 1.10 no longer allows you to specify views as a string in your URL patterns. You can no longer pass import paths to url(), you need to pass the actual view function. The solution is to update your urls.py to include the view callable. This means that you have to import the view in your urls.py.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值