使用Django框架自带的Form表单完成简单的用户登录注册

如果不知道怎么配置Django环境以及如何连接数据库请点击我的上一篇博客:
使用pycharm初始化Django框架并连接Sql Server

1.Django默认生成的数据表

  • auth_user: 存储用户的基本信息,包括用户名、密码(加密后)、电子邮件、姓名等。这个表用于支持用户身份验证系统。
  • auth_group: 存储用户组的信息,用于对用户进行分组管理。
  • auth_permission: 存储权限信息,用于管理用户和用户组的权限。
  • auth_user_groups: 用户和用户组的关联表,用于表示用户属于哪些用户组。
  • auth_user_user_permissions: 用户和权限的关联表,用于表示用户具有哪些权限。
  • django_session: 用于存储用户会话信息,包括用户的会话密钥和会话数据。
  • django_migrations: 记录了数据库迁移的历史信息,包括迁移文件的名称、应用程序名称、迁移状态等。
  • django_content_type: 用于存储模型的元数据信息,包括模型的应用程序名称、模型名称等。
  • django_admin_log: 用于记录管理员操作日志的表,包括了对数据的增删改查等操作记录。
    这些默认数据表是 Django 框架提供的核心组件,用于支持其内置功能,如身份验证、权限管理、会话管理等。它们可以根据需要进行扩展和定制,也可以通过 Django 的 ORM(对象关系映射)来进行操作和查询。本次登录注册可以使用auth_user这张数据表来完成。

2.用户登录

2.1创建登录页面

在Django项目中template目录创建user_login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f4;
            margin: 0;
            padding: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
        }
        .login-container {
            background-color: #fff;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
             width: 400px; /* 修改宽度 */
            height: 400px;
            margin: 20px; /* 添加外边距 */
        }
        .login-container h2 {
            text-align: center;
        }
        .login-container form {
            display: flex;
            flex-direction: column;
        }
        .login-container form input[type="text"],
        .login-container form input[type="password"] {
            margin-bottom: 15px;
            padding: 10px;
              margin-top: 10%;
            border-radius: 4px;
            border: 1px solid #ccc;
            font-size: 16px;
        }
        .login-container form input[type="submit"] {
              margin-top: 20%;
            background-color: #007bff;
            color: #fff;
            border: none;
            padding: 10px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
            transition: background-color 0.3s ease;
        }
        .login-container form input[type="submit"]:hover {
            background-color: #0056b3;
        }
    </style>
</head>
<body>
    <div class="login-container">
        <h2>用户登录</h2>
        <form  method="post">
              {% csrf_token %}
            <input type="text" name="username" placeholder="Username" required>
            <input type="password" name="password" placeholder="Password" required>
            <input type="submit" value="Login">
        </form>
    </div>
</body>
</html>

2.2视图处理登录请求

在项目目录中新建 reader_controller.py(一般命名为views.py 笔者写SpringBoot项目习惯了 以controller为结尾命名了)

def reader_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        if username and password:
            # 进行身份验证
            user = authenticate(username=username, password=password)
            if user is not None:
                # 读者验证成功,执行逻辑或重定向到其他页面
                return HttpResponse('登录成功')
            else:
                return HttpResponse('无效的凭据')
        else:
            return HttpResponseBadRequest('请提供用户名和密码')
    return render(request, 'user_login.html')  # 渲染 user_login.html 模板

authenticate函数详解: Django 中用于进行用户身份验证的函数。它用于验证用户提供的凭据(例如用户名和密码)是否有效,并返回相应的用户对象。

  1. 接收用户凭据: authenticate() 函数接收用户提供的凭据,通常是用户名和密码。
  2. 验证凭据: 它在数据库中查找具有提供的用户名的用户对象,然后尝试使用提供的密码对该用户进行验证。默认查询框架自带的auth_user数据表,可以在settings.py修改,改为自己的用户模型,这里以auth_user数据表举例,不过多赘述。
  3. 返回用户对象: 如果提供的凭据有效并且验证通过,authenticate() 将返回相应的用户对象。否则,它将返回 None。

2.3配置访问路径

将路径与视图处理函数进行绑定,以便进行访问页面
 path('login/', reader_controller.reader_login, name='reader_login'),

3.用户注册

3.1创建用户表单

Django 框架提供了表单组件,可以用于对页面进行初始化,生成 HTML 标签,此外还可以对用户提交的数据进行校验(显示错误信息)。在项目目录下新建forms.py文件

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User


class SignUpForm(UserCreationForm):
    email = forms.EmailField(max_length=254, help_text='必填字段')
    password1 = forms.CharField(
        label="密码",
        strip=False,
        widget=forms.PasswordInput(attrs={'autocomplete': 'new-password'}),
        help_text="至少8个字符"
    )
    password2 = forms.CharField(
        label="重复输入密码",
        widget=forms.PasswordInput(attrs={'autocomplete': 'new-password'}),
        strip=False,
        help_text="再次输入密码"
    )

    username = forms.CharField(
        label="用户名",
        help_text="必填字段"
    )

    class Meta:
        model = User
        fields = ('username', 'password1', 'password2', 'email')

这里定义了表单四个字段,并对提示进行了重载, 可以只定义 class Meta,那样显示的是默认效果。

3.2创建注册模版页面

在目录下的templates文件夹下新建signup.html

<!DOCTYPE html>
<html>
<head>
    <title>注册</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <!-- 引入 Bootstrap 样式表 -->
    <style>
        /* 自定义额外样式 */
        .form-signup {
            max-width: 400px;
            margin: 0 auto;
            padding: 15px;
            border: 1px solid #ccc;
            border-radius: 5px;
            background-color: #f9f9f9;
        }

        .form-signup h2 {
            margin-bottom: 20px;
        }

        .form-signup label {
            font-weight: bold;
            display: block;
            margin-bottom: 5px; /* 调整标签和输入框之间的间距 */
        }

        .form-signup input[type="text"],
        .form-signup input[type="password"],
        .form-signup input[type="email"] {
            width: 100%;
            padding: 8px;
            margin-bottom: 10px;
            border: 1px solid #ccc;
            border-radius: 4px;
            box-sizing: border-box;
        }

        .form-signup .btn-primary {
            margin-top: 20px;
        }
    </style>
</head>
<body>

<div class="container mt-5">
    <h2 class="text-center mb-4">用户注册</h2>
    <form method="post" class="form-signup">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="btn btn-primary btn-block">注册</button>
    </form>
</div>

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<!-- 引入 Bootstrap JavaScript -->
</body>
</html>

其中 {{ form.as_p }} 代表了引用了Django的form表单,并以p标签的形式显示。同时页面使用bootstrap框架进行了稍微了美化

3.3创建视图注册处理函数

在视图中处理用户提交的注册表单。

def signup(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/login')  # 注册成功后重定向到登录页面或其他页面
        print(form.errors)        # 打印错误信息
    else:
        form = SignUpForm()
    return render(request, 'signup.html', {'form': form})

如果使用了Django的form组件,可以直接获取form表单,并对字段进行校验,创建新用户并保存到数据库中。如果校验不通过,将继续返回注册页面重新注册

3.4配置 URL

from django.contrib import admin
from django.urls import path
from . import reader_controller
urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', reader_controller.reader_login, name='reader_login'),
    path('signup/', reader_controller.signup, name='reader_signup'),
]

4.效果演示

4.1注册

在浏览器输入http://127.0.0.1:8000/signup/
在这里插入图片描述
注册成功之后,将跳转到登录页面。查看数据库进行验证,可以发现,django 自动帮我们进行了密码加密,并且添加了其他的字段,非常的方便
在这里插入图片描述

4.2登录

当注册成功后自动跳转到登录页面,也可以在浏览器直接通过地址访问
在这里插入图片描述
当数据库数据匹配成功后,将会跳转到登录成功页面。

  • 34
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Django是一种使用Python语言编写的高级Web开发框架,它提供了许多功能和工具来简化Web应用程序的开发过程。要实现Django注册登录功能,需要进行以下步骤: 1. 创建Django项目:首先通过命令行工具创建一个新的Django项目。 2. 创建用户模型:使用Django自带用户模型或创建自定义的用户模型来存储用户注册和登录所需的信息,如用户名、密码等。 3. 创建视图函数:定义视图函数来处理用户的注册和登录请求。注册视图函数处理用户的注册请求,验证输入的信息并将用户保存到数据库中。登录视图函数将验证用户提供的登录信息,并根据结果响应用户的登录请求。 4. 实现模板:创建HTML模板文件来呈现注册和登录单,并将数据传递给视图函数进行处理。 5. 创建URL映射:设置URL映射,使用户可以通过特定的URL路径访问注册和登录页面,并将请求发送到相应的视图函数进行处理。 6. 实现登录状态管理:使用Django提供的登录状态管理工具来管理用户的登录状态,如登录后的跳转、登录后的用户信息展示等。 7. 添加安全机制:使用Django提供的安全机制,如密码加密、安全令牌等,保障用户的账号安全。 8. 测试功能:编写测试用例对注册登录功能进行测试,确保功能的正常运行。 以上是实现Django注册登录功能的一般步骤,具体实现过程还需要根据项目的需求和功能扩展进行适配。通过Django提供的丰富功能和简化开发的特性,开发者可以快速实现强大的注册登录功能。 ### 回答2: Django是一个流行的Python Web框架,提供了强大的认证和授权功能,可以轻松实现用户注册和登录功能。 首先,我们需要在Django项目中创建一个用户模型,可以使用Django内置的User模型,或者自定义一个用户模型,添加必要的字段,如用户名、密码、邮箱等。 接下来,我们可以使用Django提供的内置视图函数和单,来实现用户注册和登录功能。对于注册功能,我们可以使用Django内置的CreateView视图类,使用UserCreationForm表单来处理用户注册请求。这个单包含了用户名、密码、邮箱等字段,并提供了数据验证和保存用户的功能。 对于登录功能,我们可以使用Django内置的LoginView视图类,使用AuthenticationForm表单来处理用户登录请求。这个单包含了用户名和密码字段,并提供了用户认证和登录的功能。 在视图中,我们可以通过重写相应的函数来自定义注册和登录成功后的跳转页面,以及注册和登录失败后的错误提示。 在模板中,我们可以使用Django提供的模板标签和模板语法,来渲染注册和登录的单,并显示相应的错误信息。 此外,为了提高用户的安全性,我们可以使用Django提供的密码散列算法和密码哈希函数,对用户的密码进行加密存储,以防止密码泄露。 总结而言,使用Django实现注册登录功能非常简单,我们只需要创建用户模型、使用内置视图函数和单,并通过自定义视图和模板来实现相应的功能。同时,Django还提供了丰富的认证和授权功能,可以帮助我们更好地管理用户的访问权限和用户会话。 ### 回答3: Django 是一款流行的 Python Web 框架,提供了强大的用户认证和授权功能,可以轻松实现注册和登录功能。 要实现 Django 的注册和登录功能,通常需要进行以下几个步骤: 1. 创建用户模型:首先需要创建用户模型,可以使用 Django 自带的 `User` 模型,或者按照自己的需求自定义一个用户模型。 2. 创建注册页面:通过创建注册页面,用户可以输入用户名、密码、邮箱等信息,然后将这些信息传递给后台进行处理。 3. 后台处理注册逻辑:在后台,可以使用 Django 提供的 `Form` 类来验证用户提交的单数据,确保数据的合法性。然后,可以创建一个新的用户实例,并将用户的输入数据保存到数据库中。 4. 创建登录页面:登录页面允许用户输入用户名和密码,并将这些信息传递给后台进行验证。 5. 后台处理登录逻辑:后台可以利用 Django 提供的 `authenticate` 函数来验证用户提交的登录信息。如果验证成功,可以使用 `login` 函数将用户认证信息存储到 session 中,以便后续的登录状态保持和权限控制。 以上是实现 Django 注册和登录功能的基本步骤。除了基本的注册和登录功能,我们还可以使用 Django 提供的装饰器和中间件来对用户进行权限控制和用户认证身份的判断。例如,可以使用 `@login_required` 装饰器来限制页面的访问必须登录后才能访问。 总之,Django 提供了强大的用户认证和授权功能,可以帮助我们轻松实现注册和登录功能,并且提供了灵活的配置选项和扩展功能,以适应各种不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trump. yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值