Django网站用户登录和注销模块的编写

管理员可以通过admin后台对网站的用户和内容进行管理,但普通用户是不应该直接进入admin管理后台的。
下面我们实现网站最基础的用户登录,退出,注册的功能

1 创建app

终端中执行python manage.py startapp account命令

之后在setting.py文件中添加app

INSTALLED_APPS=[
	...,
	'account',
]

2 创建表单类

在 account 中新建一个forms.py文件
先编写一个登录用的表单

from django import forms
class LoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)

3 编写视图文件

在account 的view.py中编写对应的视图函数
函数的处理流程简单来说就是通过判断是GET请求还是POST请求,分别返回登录窗口和处理登录请求

from django.contrib.auth import authenticate, login	
from django.http import HttpResponse
from django.shortcuts import render
from .forms import LoginForm

def user_login(request):
    if request.method == "POST":
        login_form = LoginForm(request.POST)
        if login_form.is_valid():
            cd = login_form.cleaned_data
            user = authenticate(username=cd['username'],password=cd['password'])
            if user:
                login(request,user)
                return HttpResponse('登录成功')
            else:
                return HttpResponse('用户名或密码不正确')
        else:
            return HttpResponse('登录失败')
    if request.method == "GET":
        login_form = LoginForm
        return render(request,'account/login.html',{'form':login_form})

文件第一行引入了Django内置的用户认证和用户登录的方法
其中有一段代码需要强调一下

cd = login_form.cleaned_data
user = authenticate(username=cd['username'],password=cd['password'])

cleaned_data 是将form表单的数据转成了字典类型的数据。
authenticate 函数作用是验证此用户是否为本网站项目的用户。以及密码是否正确,如果都对上号了就返回User的一个实例对象,否则返回None。

一般情况下,authenticate()login()配合使用。

4 登录的前端界面

编写./templates/account/login.html模板

<div class="row text-center ">
    <h1>登录</h1>
    <form class="form-horizontal" action="{% url 'user_login' %}" method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="登录">
    </form>
</div>

这里的 {% csrf_token %}在表单中是必不可少的,不写在这个位置也行,只要在语句里即可。

5 配置路由

在urls.py中加入登录操作的路由

from account.views import user_login

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

登录模块到此就编写好了,可以先通过admin后台添加一个用户,然后在进入我们编写的登录页面尝试登录

6 注销功能的编写

注销功能很简单,也是调用Django内置的注消函数logout
views.py中编写

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

def user_logout(request):
    logout(request)
    return HttpResponse("您已注销")

这里也可以return到其他的页面根据自己业务需求来修改

urls.py 中配置

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

然后在前端界面的注销按钮中加入对应的链接地址即可

<li><a href="{% url 'user_logout' %}">注销</a></li>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值