Djngo——登录

简单账号密码验证登录
#views.py
from django.contrib.auth import authenticate,login as dlogin,logout
def login(request):
	username = request.POST.get('username','')
	password = request.POST.get('password','')
	# 验证成功返回user对象 失败返回None
	user_obj = authenticate(username=username,password=password)
	if user_obj:
		# 登录 login函数会在request中写入cookie sessionid等设置
		# 页面模版语法可用 {% request.user.is_authenticate %}判断是否登录
		dlogin(request, user)
		# 退出登录 logout清除信息
		logout(request)
自定义auth

setting配置

#settings.py
AUTHENTICATION_BACKENDS = ()
#views.py
from django.contrib.auth.backends import ModelBackend
class CustomBackend(ModelBackend)
	def authenticate(self,username=None,password=None,**kwargs)
		try:
			# user是在django中设置的user models对像,默认为user
			user = user.objects.get(username=userrname)
			if user.check_password(password):
				return user
设置页面登录访问
  1. 根据 request.user.is_authenticate() 返回值判断,false则redirect("/login/")
  2. 使用django login_required() 装饰器,若未登录默认跳转"/accounts/login/",可通过settings中LOGIN_URL变量修改默认值
  3. 在urls.py对应的url中加入 login_required 函数,如下:
from django.contrib.auth.decorators import login_required
from django.views.generic import RedirectView  # 路由层面重定向

app_name = 'user'

urlpatterns = [
	# 也可以在对应的视图函数上添加@login_required装饰器
    url(r'^account/index/$', login_required(TemplateView.as_view(template_name='user/index.html')), name='user_index'),
    ]
# 访问该页面如果未登录,跳转 settings.LOGIN_URL  并在login_url后添加以next为key以当前相对路径作值的参数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值