Django框架使用内置方法实现登录功能详解

Django框架使用内置方法实现登录功能详解

在web应用程序中,登录功能是非常常见的模块。在Django框架中,我们可以使用内置方法来实现登录功能。该方法相对简单,且Django提供了相应的便捷的工具类。

创建登录页面

首先,我们需要创建一个登录页面。在Django中,我们使用模板来创建我们的用户界面。在templates文件夹下创建login.html模板文件,如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Login</title>
</head>
<body>
  {% if error_message %}
    <p><strong>{{ error_message }}</strong></p>
  {% endif %}

  <form action="{% url 'login' %}" method="post">
    {% csrf_token %}
    <label for="username">Username:</label>
    <input type="text" name="username" id="username"><br>

    <label for="password">Password:</label>
    <input type="password" name="password" id="password"><br>

    <input type="submit" value="Log in">
  </form>
</body>
</html>

在该模板文件中,我们使用了Django内置的模板语法。其中,{{ error_message }}是我们用于在登录出现错误时显示错误信息的变量。

接下来,我们需要定义一个视图函数,用于处理login.html页面的请求。在views.py中添加如下代码:

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

def login_view(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            error_message = 'Invalid username or password.'
    else:
        error_message = None
    return render(request, 'login.html', {'error_message': error_message})

在该视图函数中,我们首先检查用户是否已经提交了表单数据(即使用POST方法)。如果是,那么我们获取用户在表单中输入的账号和密码,并使用Django内置的authenticate函数来验证这些信息。

如果用户验证成功,则我们调用Django内置的login函数来将用户的信息保存到当前用户的会话中,并将用户重定向至主页。相反,如果验证失败,则我们将错误信息存储在error_message中,并将其作为上下文变量传递给模板,以便在登录页面中显示。

创建主页

现在,我们需要创建一个主页来显示已经登录的用户信息。在templates文件夹下创建home.html模板文件,如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Home</title>
</head>
<body>
  {% if user.is_authenticated %}
    <h1>Welcome, {{ user.username }}!</h1>
    <p><a href="{% url 'logout' %}">Log out</a></p>
  {% else %}
    <h1>Welcome to my site!</h1>
    <p><a href="{% url 'login' %}">Log in</a></p>
  {% endif %}
</body>
</html>

在该模板文件中,我们检查user对象是否已经验证。如果用户已经验证,则我们显示欢迎信息,并提供重定向到注销页面的链接。相反,如果用户没有验证,则我们显示一则欢迎信息并提供重定向到登录页面的链接。

接下来,我们需要定义主页的视图函数。在views.py中添加如下代码:

from django.contrib.auth.decorators import login_required

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

在该视图函数中,我们使用Django内置的@login_required装饰器来验证用户是否已经登录。如果用户未登录,则他们将被重定向至登录页面。如果已经登录,则我们仅显示主页。

配置URLS

最后,我们需要配置我们的URLS来处理来自浏览器的请求。在urls.py中添加如下代码:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', views.login_view, name='login'),
    path('logout/', views.logout_view, name='logout'),
    path('', views.home_view, name='home'),
    path('accounts/', include('django.contrib.auth.urls')),
]

在该URL配置中,我们使用了三个视图函数:login_view,logout_view和home_view。我们也使用了一个名称login、logout和home来标识这些URL,以便在我们的模板中引用。我们还使用了Django的内置auth应用程序的URLS/include功能来包括auth应用程序的URLS,这样我们就可以访问auth应用程序中的所有视图函数了。

至此,我们已经成功地创建了登录功能,使用内置方法实现登录Django框架,并实现了关联的主页。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django框架使用内置方法实现登录功能详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Python中Django 后台自定义表单控件

    以下是Python中Django后台自定义表单控件的完整攻略,包含两个示例。 1. 确定需要自定义的控件类型 在Django后台中,我们常常需要用到一些自定义表单控件,比如富文本编辑器、图片上传控件等。在开始之前,首先需要明确需要自定义的控件类型。 2. 创建自定义表单控件 创建自定义表单控件需要继承Django的FormField类,实现__init__(…

    Django 2023年5月16日
    00
  • 六、Django之表单和类视图-Part 4

    为了接收用户的投票选择,我们需要在前端页面显示一个投票界面。让我们重写先前的polls/detail.html文件,代码如下: <h1>{{ question.question_text }}</h1> {% if error_message %}<p><strong>{{ error_message }}&l…

    Django 2023年4月10日
    00
  • Django中用户权限模块

    Django中用户权限模块 1 auth模块 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理。 auth可以和admin模块配合使用, 快速建立网站的管理系统。 在INSTALLED_APPS中添加’django.contrib.auth’使用该APP, auth模块默认启用。 2 User属性与方法 (1) 属性…

    Django 2023年4月10日
    00
  • python django day 3 页面,自动 跳转,参数传递

    zqxt_views/urls.pypath(”, calc_views.index, name=’home’), calc/views.pydef index(request): return render(request, ‘home.html’) calc/templates/home.html<!DOCTYPE html><htm…

    Django 2023年4月13日
    00
  • Python的Django框架安装全攻略

    Python的Django框架安装全攻略 简介 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型(Model)、视图(View)和模板(Template),使得数据的管理更加简单。 本文旨在介绍Django框架的安装步骤,以及如何通过示例说明来体验Django框架的使用。 安装步骤 检查Python环境 在安装…

    Django 2023年5月16日
    00
  • django 操作前端数据

    django 利用json处理前端页面数据,FLASK当中也同样   def create_company(request):if request.user.is_superuser:custom_list = Custom.objects.all()compclass_list = Compclass.objects.all()custom_list = …

    Django 2023年4月12日
    00
  • 使用Django创建第一个项目

    使用Django创建一个新项目非常简单,只需要按照以下步骤操作即可: 安装Django 在终端中输入以下命令来安装Django: pip install django 创建新项目 在终端中输入以下命令来创建一个新的Django项目: django-admin startproject mysite 这会在当前目录下创建一个名为“mysite”的新目录,其中包…

    Django 2023年3月12日
    00
  • django使用uwsgi启动

    django默认是wsgi启动,不能利用到多核执行效率很低,通过uwsgi来解决这个问题。   python虚拟环境安装配置: https://www.cnblogs.com/zezhou/p/14509198.html python虚拟环境使用操作: https://www.cnblogs.com/zezhou/p/14509203.html   安装uw…

    Django 2023年4月11日
    00
合作推广
合作推广
分享本页
返回顶部