django 框架实现的用户注册、登录、退出功能示例

下面我会详细讲解“Django 框架实现的用户注册、登录、退出功能示例”的完整攻略。

示例一:用户注册

步骤一:新建 Django 项目

首先,创建一个 Django 项目,然后在 settings.py 文件中配置数据库。在命令行中运行以下命令:

$ django-admin startproject yourprojectname

步骤二:配置数据库

settings.py 文件中配置数据库,例如:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

步骤三:创建用户模型

models.py 文件中定义一个用户模型:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    pass

步骤四:定义用户注册表单

forms.py 文件中定义一个用户注册表单:

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

class RegistrationForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

步骤五:创建用户注册视图

views.py 文件中创建一个用户注册视图:

from django.shortcuts import render, redirect
from django.contrib.auth import login
from .forms import RegistrationForm

def registration(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            return redirect('home')
    else:
        form = RegistrationForm()
    return render(request, 'registration.html', {'form': form})

步骤六:创建用户注册视图模板

templates 目录下创建 registration.html 模板文件:

{% extends "base.html" %}

{% block content %}
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Sign Up</button>
</form>
{% endblock %}

现在,你可以在浏览器中访问 http://localhost:8000/registration/ 进行用户注册了。

示例二:用户登录和退出

步骤一:创建用户登录视图

views.py 文件中创建一个用户登录视图:

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

def user_login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')
        else:
            # Return an 'invalid login' error message.
            pass
    return render(request, 'login.html')

步骤二:创建用户登录视图模板

templates 目录下创建 login.html 模板文件:

{% extends "base.html" %}

{% block content %}
<form method="post" action="{% url 'login' %}">
    {% csrf_token %}
    <label for="username">Username:</label>
    <input type="text" name="username" id="username">
    <label for="password">Password:</label>
    <input type="password" name="password" id="password">
    <button type="submit">Log In</button>
</form>
{% endblock %}

步骤三:创建用户退出视图

views.py 文件中创建一个用户退出视图:

from django.contrib.auth import logout

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

步骤四:创建用户退出视图模板

templates 目录下创建一个链接用于用户退出:

{% extends "base.html" %}

{% block content %}
    <p>You are logged in as {{ user.username }}.</p>
    <a href="{% url 'logout' %}">Log out</a>
{% endblock %}

现在,你可以在浏览器中访问 http://localhost:8000/login/ 进行用户登录了,登录成功后,你也可以在 http://localhost:8000/ 中找到一个用户退出链接,用于退出当前登录。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django 框架实现的用户注册、登录、退出功能示例 - Python技术站

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

相关文章

  • django之创建子应用

    一:子应用   Django的视图编写是放在子应用中的。类似于flask中的视图。 二:创建子应用   例如:在刚才的dj_study项目中,创建一个名字为user的子应用(目录):注意是第一级的dj_study下面。   python manage.py startapp user  # manage.py启动和创建程序的子应用    三:子应用的目录说明…

    Django 2023年4月12日
    00
  • [django]数据导出excel升级强化版(很强大!)

    不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条件导出的功能了. 先上图: 再说明:核心是使用django视图中的命名组,例如配置url(r’^perm=(?P<a>\w+)$’, ‘keywor…

    2023年4月10日
    00
  • Django多数据库联用实现方法解析

    Django是一个流行的Python Web框架,可以让我们快速开发Web应用程序。在一些大型的Web应用程序中,我们可能需要同时使用多个数据库。本文将讲解Django如何实现多数据库联用。本文包括以下内容: Django多数据库联用的基本原理 Django如何配置多个数据库 示例一:在Django中使用一个默认数据库和一个只读从属数据库 示例二:在Djan…

    Django 2023年5月15日
    00
  • [Django]用户权限学习系列之设计自有权限管理系统设计思路

    若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ-LQJ/p/5604331.html 现在步入正题,这篇文章是关于自有权限管理系统设计的思路描述,自有权限管理系统是抛弃django自带的后台管理界面,基于自己…

    2023年4月10日
    00
  • Django rest framework之序列化Is_valid

    最近业务用到django,遇到类似问题,记录下问题,方便日后查阅 转载: https://blog.csdn.net/xiaochendefendoushi/article/details/80956281 反序列化使用 验证 使用序列化器进行反序列化时,需要对数据进行验证后,才能获取验证成功的数据或保存成模型类对象。 在获取反序列化的数据前,必须调用is_…

    Django 2023年4月13日
    00
  • django 简单实现登录验证给你

    下面是我针对“django 简单实现登录验证”的攻略,分两个示例逐步说明如下。 示例一 首先,在基于 Django 创建的网站的项目文件夹下,创建一个新的应用(App)。在终端里输入以下命令: bash python manage.py startapp accounts 这将在你的项目文件夹下创建一个名为 accounts 的应用。 在 accounts …

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

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

    Django 2023年3月13日
    00
  • Django学习之六:Django 常用模块导入记忆

    Django 常用模块导入记忆 django相关 1. urls相关操作 from django.urls import path, re_path, include from django.urls import reverse // 注意reverse 和另一个reversed区别。前者要明确导入,后者是built-in内置不用导入;两者功能也不一。 2…

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