Login
网站首页 > 文章中心 > 其它

django实现用户登陆功能详解

作者:小编 更新时间:2023-09-02 11:25:40 浏览量:428人看过

下面详细讲解"Django实现用户登录功能"的完整攻略:

1. 创建Django项目

首先,我们需要先创建一个Django项目.在命令行中执行如下命令:

django-admin startproject myproject


django实现用户登陆功能详解-图1

2. 创建应用

此时此刻呢,我们需要创建一个应用,用来实现用户登录功能.在命令行中执行如下命令:


django实现用户登陆功能详解-图2

python manage.py startapp login

③ 创建用户模型

创建用户模型可以使用 Django 内置的AbstractBaseUser或AbstractUser类,这里我们使用 AbstractUser 类.

在 login/models.py 中添加如下代码:

from django.contrib.auth.models import AbstractUser

class User(AbstractBaseUser):
    return self.username

④ 创建用户表单

在 login/forms.py 中添加如下代码:

from django import forms
from django.contrib.auth.forms import AuthenticationForm

class LoginForm(AuthenticationForm):
    fields = ('username', 'password')

我们继承了 Django 自带的 AuthenticationForm 类,并自定义了表单的 label 和 widget,用来渲染表单的样式.

⑤ 创建登录视图

在 login/views.py 中添加如下代码:

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

def user_login(request):
return render(request, 'login/login.html', {'form': form})

这里我们创建了一个登录视图函数,接收用户提交的表单数据进行验证,并调用 Django 内置的 authenticate 方法进行身份验证,如果通过验证,则调用 Django 内置的 login 方法登录用户.

同时,我们在 render 函数中返回了 login.html 模板,并将表单数据 form 传递给了模板,用来渲染表单.

⑥ 创建登录模板

在 login/templates/login/login.html 中添加如下代码:

{% extends 'base.html' %}

{% block content %}
  

用户登录

{% endblock %}

这里我们在模板中使用 Django 内置的模板语言来渲染表单,使用了 {{ form.username }} 和 {{ form.password }} 来渲染表单的输入框,使用了 {{ form.errors }} 来渲染表单的错误信息.

示例说明1

在登录视图中,我们使用了LoginForm来验证用户输入的信息.为了防止用户随意输入其他属性,导致信息泄露,我们在LoginForm中添加Meta属性,指定了需要传入的属性.

class LoginForm(AuthenticationForm):
    fields = ('username', 'password')

示例说明2

在用户模型中,我们使用了AbstractUser类,继承该类之后,我们只需加入自定义的属性即可.

from django.contrib.auth.models import AbstractUser

class User(AbstractBaseUser):
    return self.username

继承AbstractUser类后,Django会自动为我们创建了许多内置的模型方法和管理员权限.同时,由于我们添加了USERNAME_FIELD属性,Django会自动将该属性作为用于检查的唯一标识.

以上就是土嘎嘎小编为大家整理的django实现用户登陆功能详解相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章