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 xadmin 模板的定制

    编辑新增等页面对应的modelform为ModelFormAdminView (xadmin.views.edit.ModelFormAdminView)   通过源码分析,新增对象的template属性为add_form_template, 修改为change_form_template, 代码如下: class ModelFormAdminView(Mo…

    Django 2023年4月16日
    00
  • Django缓存机制–rest_framework中节流源码使用的就是django提供的缓存api

    一、配置缓存  https://www.jb51.net/article/124434.htm 二、缓存全站、页面、局部   三、自我控制的简单缓存API API 接口为:django.core.chache 存接口:cache.set(key, value, time_out) 取接口:cache.get(key) django中的低层次缓存API 有些时…

    Django 2023年4月10日
    00
  • 【Django单元测试方法】

    一.前言/准备   测Django的东西仅限于在MTV模型。哪些可以测?哪些不可以。 1.html里的东西不能测。①Html里的HTML代码大部分都是写死的②嵌套在html中的Django模板语言也不能测,即使有部分逻辑。 但写测试用例时至少要调用一个类或者方法。模板语言没有出参也没有入参,不能测2.models模型可测。属于数据库层3.views,视图层可…

    Django 2023年4月11日
    00
  • Python Django基础二之URL路由系统

    下面是Python Django基础二之URL路由系统的完整攻略。 1. 什么是URL路由系统 在Django中,URL路由系统就像是一个分配任务的调度员,当用户访问某个URL时,它会把这个请求分发给相应的视图函数进行处理。URL路由系统被设计得非常灵活,可以支持各种不同的URL格式。 2. URL路由系统的配置 Django中的URL路由系统的配置是在ur…

    Django 2023年5月16日
    00
  • Django3中的自定义用户模型实例详解

    下面我会详细讲解“Django3中的自定义用户模型实例详解”的完整攻略,过程中将会包含两条示例说明。 什么是Django3中的自定义用户模型? 在Django3中,用户模型是一个具有以下属性的模型: 用户名 电子邮件地址 密码 是否是超级用户 除此之外,还可以添加其他自定义字段。当创建一个新的Django3项目时,会自动创建一个名为User的用户模型。但是,…

    Django 2023年5月16日
    00
  • Django—Form两种保留用户提交数据的方法

    用户在网页上进行表单填写时,有可能出现某项填写错误。一般情况下,用户在未发觉错误的情况下点击提交,则此表单的内容会清空,用户不得不再重新填写,这样的用户体验是及其糟糕的。 在此,我们有2种方法将用户的输入保存下来,一旦填写错误,只需要将错误项修改即可重新提交。 一、利用Form生成Html标签 1. views.py 1 from django.shortc…

    Django 2023年4月10日
    00
  • django中将views.py中的python方法传递给html模板文件

    常规的模板渲染 from django.db import models # Create your models here. class ArticalType(models.Model): caption = models.CharField(max_length=16) class Category(models.Model): caption = m…

    Django 2023年4月12日
    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
合作推广
合作推广
分享本页
返回顶部