Django中自己编写的登入模块记住状态的问题

linkBG
  • 387

没有使用自带的auth。我自己写了一个登入界面和views,但是如何记住你的状态?然后查了官方文档,说要使用@login_required,但是需要使用authenticate,因为它通过is_authenticated()来判断的。我是不是也要自己写一个装饰器呢?如果是怎么写。结合我views中产成的session来判断?还是怎么来完成?谢谢

views cide
图片描述

测试登入状态的代码
图片描述

回复
阅读 2.2k
1 个回答

登录:

from django.contrib.auth import authenticate, login, logout

def log_in(request):
    if request.method == 'GET':
        form = LoginForm()
        return render(request, 'login.html', {'form': form})
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['uid']
            password = form.cleaned_data['pwd']        
            user = authenticate(username=username, password=password) 
            if user is not None:
                login(request, user)
                url = request.POST.get('source_url','/focus') 
                return redirect(url)
            else:
                return render(request,'login.html', {'form':form, 'error': "password or username is not ture!"})
            
        else:
            return render(request, 'login.html', {'form': form})

需要登录验证的操作函数:
在函数前使用 django的 @login_required 修饰就可以

from django.contrib.auth.decorators import login_required

@login_required
def log_out(request):
    # 顺便把log_out给你写出来了
    url = request.POST.get('source_url', '/focus/')
    logout(request)
    return redirect(url)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏