今天的Django教训汇总:新增用户登录、登出功能-20210407

1.登录页面

1.1 我的代码

#views.py

# 登录视图
def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request,username=username,password=password)

        if user:
            if user.is_active:
                #login(username,password)
                login(request,user)
                return HttpResponseRedirect('/admin/')
            else:
                return HttpResponse("Your account is not active.")
        else:
            print("Invalid login detail:{0},{1}".format(username,password))
            return HttpResponse("Invalid login detail")
    else:
        return render(request,'myclass/login.html',{})

#login.html

<html>
<head>
    <title>Login</title>
</head>

<body>
    <h1>Login</h1>
    <form id="login_form" action="" method="POST">
        {% csrf_token %}
        Username:<input type='text' name="username" value="" size="30">
        <br/>
        Password:<input type='password' name="password" value="" size="30">
        <br/>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

#urls.py

urlpatterns = [
	......
    path('user_login/', views.user_login, name='user_login'),
	......
]

#info.html

<p><a href="/user_login/">user_login</a></p>

在这里插入图片描述

1.2 参考官网手册

https://docs.djangoproject.com/zh-hans/3.1/topics/auth/default/#django.contrib.auth.views.LoginView
在这里插入图片描述

1.3 代码的错误

login(request,password)误写成了login(username,password),导致出现 AttributeError: ‘str’ object has no attribute ‘session’

2.登入的应用

2.1 装饰器@login_required

最简单的做法,是利用装饰器@login_required来控制权限,如:

# 建立成绩查询界面-all
@login_required
def Search_Subject_Score(request):
    score_list = Subject_Score.objects.order_by('sid').all()
    return render(request, 'myclass/Search_Subject_Score.html',context={'score_list': score_list}

2.2 用户没有登入的重定向

在这里插入图片描述
#setting.py设定好LOGIN_URL后,未登入的用户将自动跳转到’/user_login/’。

LOGIN_URL = '/user_login/'

3. 登出页面:

#views.py
logout无需写template模板,使用重定向即可HttpResponseRedirect(’/user_login/’)。

# 登出页面
@login_required
def user_logout(request):
    logout(request)
    return HttpResponseRedirect('/user_login/')

#urls.py

urlpatterns = [
	......
    path('user_logout/', views.user_logout, name='user_logout'),
	......
]

#info.html

<p><a href="/user_logout/">user_logout</a></p>

4.登出的应用

主要用于退出当前用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值