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

基于Django用户认证系统详解_django中如何实现用户的登录认证

作者:小编 更新时间:2023-08-06 11:40:15 浏览量:119人看过

下面是关于"基于Django用户认证系统详解"的完整攻略,包含两条示例说明.

什么是Django用户认证系统?

Django用户认证系统是Django框架提供的一个内置模块,它可以帮助我们轻松地实现用户认证、授权和管理等功能.

Django用户认证系统的使用

准备工作


基于Django用户认证系统详解_django中如何实现用户的登录认证-图1

INSTALLED_APPS = [ ... ]

然后运行以下命令,以创建Django用户认证系统所需的数据表:

python manage.py migrate

注册用户

要在Django用户认证系统中注册用户,我们可以使用以下代码:

from django.contrib.auth.models import User

# 创建一个新用户
user = User.objects.create_user('username', 'email', 'password')

用户登录

要在Django用户认证系统中实现用户登录,我们可以使用以下视图函数:

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

def user_login(request):
    return render(request, 'login.html')

这里我们首先使用authenticate()函数来验证用户的用户名和密码是否正确,如果验证通过,我们就使用login()函数将用户登录,并且重定向到home页面,如果验证失败,我们就返回一个包含错误消息的登录页面.

用户登出

要在Django用户认证系统中实现用户注销,我们可以使用以下视图函数:

from django.contrib.auth import logout
from django.shortcuts import render, redirect

def user_logout(request):
return redirect('home')

这里我们只需要使用logout()函数将用户登出,并且重定向到home页面.

示例说明

示例1:注册和登录

以下是一个简单的示例,演示如何使用Django用户认证系统进行注册和登录.

然后,我们创建一个包含注册和登录视图函数的auth/views.py文件.

from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render, redirect
from django.contrib.auth.models import User

def user_register(request):
return redirect('home')

然后,我们创建一个包含注册和登录表单的auth/templates文件夹,并分别在其中创建register.html和login.html模板文件.以下是register.html模板文件的示例代码:


以下是login.html模板文件的示例代码:


这里的templates/base.html文件是一个包含网站标题和基本样式的通用模板文件.

最后,我们创建一个包含home视图函数的auth/views.py文件,并创建home.html模板文件.以下是home视图函数的示例代码:

from django.shortcuts import render

def home(request):
return render(request, 'home.html')

以下是home.html模板文件的示例代码:

{% extends 'base.html' %}

{% block content %}
  {% if user.is_authenticated %}

Welcome, {{ user.username }}

Logout

{% else %}

Register

Login

{% endif %} {% endblock %}

这里的{% if user.is_authenticated %}代码块是一个用于检查用户是否已经登录的模板标签.如果用户已经登录,我们就显示一个欢迎消息和一个注销链接,否则就显示一个注册链接和一个登录链接.

示例2:使用装饰器限制访问权限

以下示例演示如何使用装饰器限制用户的访问权限.

在auth/views.py文件中,我们添加一个叫做"user_only"的装饰器函数.如果用户已经登录,我们就允许他们访问资源,否则就重定向到登录页面.

from django.contrib.auth.decorators import login_required

@login_required(login_url='user_login')
def secret_page(request):
return render(request, 'secret.html')

这里的@login_required装饰器函数会检查用户是否已经登录.如果用户已经登录,我们就允许他们访问secret_page视图函数,否则就重定向到user_login视图函数.

然后我们在auth/templates文件夹中创建一个secret.html模板文件.

{% extends 'base.html' %}

{% block content %}
  

Secret Page

This is a secret page that only logged in users can access.

{% endblock %}

最后,我们修改auth/templates/home.html模板文件,添加一个指向secret_page视图函数的链接.

{% extends 'base.html' %}

{% block content %}
  {% if user.is_authenticated %}

Welcome, {{ user.username }}

Logout

Secret Page

{% else %}

Register

Login

{% endif %} {% endblock %}

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

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

编辑推荐

热门文章