详解Django HTML表单实现用户登录退出

在Django中,实现用户登录和退出是非常简单的,主要涉及到视图函数和模板的编写。

下面是实现用户登录和退出功能步骤:

创建Django项目

创建Django项目并在其中创建一个名为 "accounts " 的应用程序。

django-admin startproject myproject
cd myproject
python manage.py startapp accounts

创建 "login " 的 URL 路由

创建一个名为 "login " 的 URL 路由,用于处理用户登录页面和用户登录请求。

在 "urls.py " 文件中,添加以下代码:

from django.urls import path
from .views import *

urlpatterns = [
    path('login/', login_view, name='login'),
    path('logout/', logout_view, name='logout'),
]

创建用户登录的视图函数

在 "views.py " 文件中,添加以下代码:

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

def login_view(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user:
            login(request, user)
            return redirect('/')
        else:
            message = 'Invalid login credentials!'
            return render(request, 'accounts/login.html', {'message':message})
    else:
        return render(request, 'accounts/login.html')

这个视图函数接受从HTML表单POST过来的username和password,接着调用Django内置的方法 authenticate() 接收request和username,password两个参数,如果用户名和密码是正确的,该方法会返回一个用户对象,反之返回None。如果authenticate()方法返回一个用户对象,视图函数将使用Django内置的 login() 方法登录该用户,并将其重定向到主页。 如果验证失败,将向页面发送一个错误消息。

创建用户退出的视图函数

在 "views.py " 文件中,添加以下代码:

def logout_view(request):
    logout(request)
    return redirect('/')

这个视图函数调用 Django 内置的 logout() 方法,该方法会将用户从系统中注销。

创建 "login.html" 的模板

创建一个名为 "login.html" 的模板,用于渲染用户登录表单。

在 "templates/accounts " 目录下,创建一个名为 "login.html " 的模板文件,添加以下代码:

{% if message %}
    <p>{{ message }}</p>
{% endif %}

<form method="POST">
    {% csrf_token %}
    <label for="username">Username:</label>
    <input type="text" name="username" required>
    <label for="password">Password:</label>
    <input type="password" name="password" required>
    <input type="submit" value="Login">
</form>

这个模板文件渲染了一个包含用户名和密码输入框的表单,以及一个提交按钮。它还使用 {% csrf_token %} 标记来确保 POST 请求的安全性。

创建“base.html”通用模板

创建一个名为 “base.html”的通用模板,用于作为其他模板的父模板。 在“templates”目录下创建“base.html”,并添加以下内容:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8"/>
        <title>{% block title %}{% endblock %}</title>
    </head>
    <body>
        {% block content %}
        {% endblock %}
    </body>
    </html>

创建 “home.html” 模板

创建一个名为 “home.html” 的模板,用以渲染用户已登录的页面。 将以下代码添加到“home.html”中:

    {% extends "base.html" %}
    {% block title %}Home{% endblock %}
    {% block content %}
        {% if user.is_authenticated %}
            <p>Welcome, {{ user.username }}!</p>
            <a href="{% url 'logout' %}">Logout</a>
        {% else %}
            <p>You are not logged in.</p>
            <a href="{% url 'login' %}">Login</a>
        {% endif %}
    {% endblock %}

更新 INSTALLED_APPS

更新“settings.py”中的INSTALLED_APPS, 添加新应用程序 "accounts " 和 "django.contrib.auth "。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'accounts',
    ]

至此,我们已经完成了Django HTML表单实现用户登录退出的完整攻略。通过上述步骤的操作,用户可以通过表单输入用户名和密码来登录系统,也可以通过点击“Logout”按钮来退出系统。在“Home”页面上,用户可以看到系统当前的登录状态 。

此文章发布者为:Python技术站作者[metahuber],转载请注明出处:http://pythonjishu.com/django-html-login/

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年 3月 12日 下午9:57
下一篇 2023年 3月 12日 下午10:02

相关推荐

  • Django模板中校验用户身份与权限

    在Django模板中校验用户身份与权限是非常重要的, 它可以确保用户只能够访问他们被授权访问的页面和功能。 以下是在Django模板中校验用户身份与权限的完整攻略: 首先,你需要获取用户身份认证的信息以及权限信息。可以使用Django自带的user变量来获取。 {% if user.is_authenticated %} {% if user.is_staf…

    Django 2023年 3月 13日
    00
  • Django路由Path方法详解(详细步骤)

    Django中的路由系统是通过URLconf(URL配置)来实现的。URLconf将URL模式映射到视图函数或类上。在Django中,我们可以使用两种方式来定义URLconf,一种是使用基于函数的视图,另一种是使用基于类的视图。 在URLconf中,我们需要使用路由函数来匹配URL模式,Django提供了两种路由函数:path()和re_path()。在本文…

    Django 2023年 3月 12日
    00
  • Django实现自定义标签

    在Django中,标签(Tag)是一种用于添加动态数据和逻辑的模板语言。标签能够实现复杂的逻辑,并且使模板变得更加灵活。 Django提供了一些内置的标签,但是有时候我们需要自定义标签,以满足特定的需求。 Django提供了两种自定义标签的方式:简单标签和复杂标签。简单标签是没有结束标记的标签,而复杂标签有开始标记和结束标记。 简单标签 自定义简单标签只需要…

    Django 2023年 3月 12日
    00
  • 搭建Django开发环境(Windows、Linux、MacOS)

    Windows系统下的搭建方法 Step 1:安装Python 在Windows系统下,我们可以直接从Python官网 https://www.python.org/downloads/ 下载Python的最新版本,并进行安装。 Step 2:安装Django 打开命令行窗口,运行以下命令来安装Django: pip install django Step …

    Django 2023年 3月 12日
    00
  • Django Form表单实现自定义字段

    Django是一个高效的开发框架,包括了诸多功能强大的模块,如Forms模块,它是用于处理Web应用程序中的表单的模块,提供了一种快速简洁的方式来以前端方式与后端进行交互,实现数据的处理。 Django也使用了许多内置的表单字段,如CharField、IntegerField、EmailField和PasswordField等等。用户还可以通过Forms模块…

    Django 2023年 3月 12日
    00
  • Django url标签详解

    Django中提供了一个url标签,它可以用于生成URL,这对于模板中的链接很有用。url标签可以帮助我们在模板中对应用程序中的视图进行链接,因此我们可以展示数据无需手动构建URL。 url语法: {% url 'url_name' arg1 arg2 … %} url_name: URLconf中定义的名称(或视图)。 arg1, …

    Django 2023年 3月 12日
    00
  • Django实现邮件的发送(含源码)

    Django是一个Python Web框架,提供了极为强大的发送电子邮件的能力。下面将详细阐述Django如何实现邮件的发送。 配置邮件设置 在Django的settings.py文件中,添加以下配置: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_…

    Django 2023年 3月 13日
    00
  • Django Auth装饰器验证用户身份与权限

    Django Auth装饰器是一种基于装饰器的身份验证和授权工具,它可以帮助你快速而简便地限制用户的访问权限。在本文中,我们将深入了解Django Auth装饰器,并提供详细的代码示例,以便帮助你更好地理解它们的实现。 Django Auth装饰器的基本用法 Django Auth装饰器有多种用途,但最常用的就是验证用户身份。下面就是它的最基本用法: fro…

    Django 2023年 3月 13日
    00
  • 详解Python unittest模块实现单元测试

    Python unittest是Python内置的标准库,用于实现单元测试。它提供了一个测试框架,让开发者可以编写测试用例,自动运行测试用例,并输出测试结果。 以下是使用Python unittest模块实现单元测试的完整攻略,包括以下内容: 编写测试用例 创建测试套件 运行测试用例 查看测试结果 编写测试用例 首先,需要编写测试用例。测试用例是针对被测试代…

    Django 2023年 3月 13日
    00
  • Django初始化项目环境

    Django是一个高效、可扩展、开放源代码的Web框架,它基于Python编程语言开发,并使用了一系列的组件和技术,为Web应用的开发提供了强大的支持和便利。如果你想在Django中成功构建一个Web应用程序,那么首先必须对Django项目的初始化和环境搭建有一定的了解和掌握。 下面就来详细介绍一下Django初始化项目环境的步骤和注意事项。 安装Pytho…

    Django 2023年 3月 12日
    00