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

yizhihongxing

在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”页面上,用户可以看到系统当前的登录状态 。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Django HTML表单实现用户登录退出 - Python技术站

(0)
上一篇 2023年3月12日
下一篇 2023年3月12日

相关文章

  • 【Python web 开发】django rest framwork 的token 登录和原理

      背景: 有些接口比如提交订单,获取用户列表是要用到用户信息的,是要用户登录后才能进行的 用户登录在前后端分离系统中与我们之前基于模板template进行开发是有区别的 思考一个问题:为什么我们的django  rest framwork 会有登录和退出功能呢? 因为,这里有配置哦 这里有 login 和loginout,里面的 login 调用了logi…

    Django 2023年4月12日
    00
  • django通过使用jwt模块实现状态保持

      第一步:安装jwt pip install djangorestframework-jwt   第二步:settings/dev的配置文件配置 REST_FRAMEWORK = { # 认证配置 ‘DEFAULT_AUTHENTICATION_CLASSES’: ( ‘rest_framework_jwt.authentication.JSONWebTo…

    2023年4月10日
    00
  • Django 中自定义 Admin 样式与功能的实现方法

    Django自带的Admin界面提供了非常方便的后台管理功能,然而,为了更好地满足业务需求,我们往往需要对Admin界面进行一些自定义的修改,例如修改表单样式、增加自定义页面等。本文将介绍Django中自定义Admin样式与功能的实现方法,包括两个实例,分别是修改Admin界面的样式、增加自定义页面。 修改Admin界面的样式 方案 Django中自定义Ad…

    Django 2023年5月16日
    00
  • Python的Django框架中forms表单类的使用方法详解

    Python Django框架中forms表单类的使用方法详解 在 Django 框架中使用 forms 表单类是非常方便的。本文将详细解释如何创建和使用 forms 表单类。 创建forms表单类 要创建表单类,您需要导入 Django 的 forms 模块并创建一个类。类定义包括表单字段以及它们的验证规则。下面是一个简单的表单类示例: from djan…

    Django 2023年5月16日
    00
  • 详解Django视图函数

    Django是一个基于Python的Web框架,具有灵活性和高效性。在Django中,视图(views)是处理Web请求并返回Web响应的核心组件之一。本文将详细讲解Django视图函数的基本概念以及如何编写和使用Django视图函数。 概念 视图函数负责处理Web请求并生成Web响应。在Django中,一个视图函数通常会接收一个或多个HTTP请求,并返回一…

    Django 2023年3月11日
    00
  • Django:(08)序列化器

    1、序列化和反序列化变量从内存中变成可存储或传输的过程称之为序列化,序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化。 序列化是将对象状态转换为可保持或可传输的形式的过程。序列化的补集是反序列化,后者将流转换为对象。这两个过程一起保证数据易于存储和传输。 2、Django中…

    Django 2023年4月11日
    00
  • Windows下Apache+Django+mod_wsgi的static和media问题处理

    配置好了Apache可以访问Django工程了(参见前篇:Windows编译安装mod_wsgi,配合使用Django+Apahce) 但是Django中的static、media等文件Apache是无法直接找到的 现在来配置,使得他们的static和media根目录保持一致   1 配置Apache的 httpd.conf Alias /static/ “…

    Django 2023年4月13日
    00
  • Django基于Models定制Admin后台实现过程解析

    下面我将详细讲解 “Django基于Models定制Admin后台实现过程解析”的完整攻略。在实现过程中,我们将使用两个示例来说明。 1. 简介 Django是一款使用Python语言编写的开源Web框架,其主要目的是快速开发可维护的Web应用程序。Django提供了一组工具和库,使得开发Web应用程序变得简单和高效。其中之一就是Django Admin,它…

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