首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Django 3中使用类基视图实现不区分大小写的用户名和电子邮件

在Django 3中,可以使用类基视图来实现不区分大小写的用户名和电子邮件。具体步骤如下:

  1. 首先,在settings.py文件中配置AUTH_USER_MODEL为自定义的用户模型,例如:
代码语言:txt
复制
AUTH_USER_MODEL = 'myapp.CustomUser'

这里的myapp是你的应用名称,CustomUser是你自定义的用户模型。

  1. 创建一个自定义的用户模型CustomUser,继承自AbstractUser,并重写normalize_username方法和email字段,如下所示:
代码语言:txt
复制
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    email = models.EmailField(unique=True)

    def normalize_username(self, username):
        return username.lower()

这里重写了normalize_username方法,将用户名转换为小写,实现不区分大小写的用户名。

  1. urls.py文件中定义相应的URL路由和视图,使用类基视图CreateViewUpdateView来处理用户注册和更新操作,如下所示:
代码语言:txt
复制
from django.urls import path
from myapp.views import UserCreateView, UserUpdateView

urlpatterns = [
    path('register/', UserCreateView.as_view(), name='register'),
    path('profile/update/', UserUpdateView.as_view(), name='profile_update'),
]

这里的UserCreateViewUserUpdateView是自定义的视图类,分别用于用户注册和更新。

  1. 创建相应的视图类UserCreateViewUserUpdateView,继承自CreateViewUpdateView,并指定模型和表单类,如下所示:
代码语言:txt
复制
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy
from django.views.generic import CreateView, UpdateView
from myapp.models import CustomUser
from myapp.forms import UserForm

class UserCreateView(CreateView):
    model = CustomUser
    form_class = UserForm
    template_name = 'register.html'
    success_url = reverse_lazy('login')

class UserUpdateView(LoginRequiredMixin, UpdateView):
    model = CustomUser
    form_class = UserForm
    template_name = 'profile_update.html'
    success_url = reverse_lazy('profile_update')

这里的UserForm是自定义的表单类,用于用户注册和更新的表单验证。

  1. 最后,创建相应的模板文件register.htmlprofile_update.html,用于用户注册和更新的页面展示。

通过以上步骤,就可以在Django 3中使用类基视图实现不区分大小写的用户名和电子邮件。在用户注册和更新时,系统会自动将用户名转换为小写,并确保电子邮件的唯一性。这样可以提高用户体验,并减少重复注册的问题。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云数据库MySQL版、腾讯云对象存储(COS)等。你可以通过访问腾讯云官网(https://cloud.tencent.com/)了解更多相关产品和详细介绍。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django】 开发:补充知识

Django提供了Paginator可以方便实现分页功能 Paginator位于django.core.paginator 模块中。...number为页码信息(从1开始) 返回当前number页对应页信息 如果提供页码不存在,抛出InvalidPage异常 Paginator异常exception InvalidPage:总异常...利用QQ邮箱发送电子邮件 django.core.mail 子包封装了 电子邮件自动发送SMTP协议 前其准备: 申请QQ号 用QQ号登陆QQ邮箱并修改设置 用申请到QQ号密码登陆到 https...部署要分以下几个步骤进行 安装机器上安装配置同版本环境 django 项目迁移 $ sudo scp 当前项目源代码 远程主机地址和文件夹 sudo scp /home/tarena/django...Web 服务器之间一种接口,被广泛使用 使用 python manage.py runserver 通常只开发测试环境中使用

6.4K30

【云+社区年度正文】Django从入门到精通No.3---与数据库交互

二、与数据库建立连接 前面我们讲过django模型关联关系后,我们来试着操纵下数据库,首先我们需要在django中配置数据库,进入settings.py文件中,如下: 1.jpg 这里我们可以设置四种数据库类型...,指定会有警告信息 配置好了之后,我们需要使用pymysql模块来使数据库连接上,只需该目录init.py文件中添加如下代码即可: import pymysql pymysql.install_as_MySQLdb...七、操作数据库 我们可以cmd窗口中来实现数据库基本操作,如图: 4.jpg 如果你不习惯cmd中操作,也可以把代码写在appviews.py文件中,如下: 5.jpg 然后把这个视图函数添加到...首先我们来看看我们编写数据模型,如下: from django.db import models from django.utils import timezone # Create your models...='aaa')#包含aaa,且aaa区分大小写 book.objects.filter(book_name__iexact='aaa')#为aaa,但是区分大小写 5.book.objects.exclude

97630

Django模型model

前言 根据前几篇文章分享已经了解djangoWeb开发一般步骤为: 创建虚拟环境 安装django 创建项目 创建应用 model.py中创建模型 定义视图 配置url 创建模板 1....定义模型 模型中定义属性,会生成数据库表中字段 django根据属性类型确定以下信息: 当前选择数据库支持字段类型 渲染管理表单时使用默认html控件 管理站点最低限度验证 django...模型中字段选项 通过字段选项,可以实现对字段约束 字段对象时通过关键字参数指定 null:如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False blank:如果为True...说明: init 方法已经models.Model中使用自定义模型中无法使用 模型中增加一个方法保存数据到数据库 class BookInfo(models.Model): @classmethod...isnull、isnotnull:是否为null filter(btitle__isnull=False) 在前面加个i表示区分大小写,如iexact、icontains、istarswith

12010

Django User 模块之 AbstractUser 扩展详解

顺着读Django 各模块源码,我们可以更灵活地更改代码以实现自己想要功能。 现在,思考一个问题,主需求是实现博客中用户注册登录登出功能。...如果只满足于用户注册时只登记其邮箱或是用户名Django 自带 User 模块既可以实现。但实际上,一个普遍要求是注册用户应该能够修改自己头像信息,邮箱信息,昵称信息等其他更灵活需求。...’ 其中,blog 为你对应应用 app 信息,user 为 blog 应用下 user 模块,在这里 blog user 大小写无关。...内置用户AbstractUser 我们之前讲过了model模型作用作用,这次介绍内置用户AbstractUser就是Django内置一个关于用户操作,它极大地方便了我们对model...AbstractUser一起使用 通常使用视图post方法校验用户登录等操作 view中具体代码如下 class LoginView(View): def get(self,request

1.9K10

Python全栈开发之Django基础

BookInfo.objects.filter(btitle__contains='传') list = BookInfo.objects.filter(btitle__icontains='传') # 区分大小写...BookInfo.objects.filter(btitle__startswith='神') list = BookInfo.objects.filter(btitle__istartswith='神') # 区分大小写...BookInfo.objects.filter(btitle__endswitch='侣') list = BookInfo.objects.filter(btitle__iendswitch='侣') # 区分大小写...,建议要储服务器端,不能存储浏览器中,如用户名、余额、等级、验证码等信息 禁用Session中间件 存储方式 存储在数据库中,如下设置可以写,也可以写,这是默认存储方式 SESSION_ENGINE...总结:定义url时,需要为include定义namespace属性,为url定义name属性,使用时,模板中使用url标签,视图使用reverse函数,根据正则表达式动态生成地址,减轻后期维护成本

3.7K20

Django3.2边学边记—Adimn站点管理

准备工作 创建管理员用户名密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 admin.py中注册模型 1234567 from django.contrib...ModelAdmin可以控制不同模型Admin界面中展示方式,主要包括列表页展示方式、添加修改页展示方式 上文中展示了TestAdmin一种注册方法,还有一种方法,就是使用装饰器注册,...image.png   由action_on_bottom action_on_top两属性来控制 默认显示顶部,默认值分别为:False True,改为只显示底部: 1234 class...atitle.short_description='标题'   如果是更改模型字段显示列标题,可以定义模型字段时,设置verbose_name值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性...,并返回所有包含这些词对象,区分大小写(即 icontains 查找:区分大小写包含匹配),其中每个词必须在 search_fields 中至少有一个。

1.1K00

Django3.2边学边记—Adimn站点管理

准备工作 创建管理员用户名密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 admin.py中注册模型 1234567 from django.contrib...ModelAdmin可以控制不同模型Admin界面中展示方式,主要包括列表页展示方式、添加修改页展示方式 上文中展示了TestAdmin一种注册方法,还有一种方法,就是使用装饰器注册,...  由action_on_bottom action_on_top两属性来控制 默认显示顶部,默认值分别为:False True,改为只显示底部: 1234 class TestAdmin...atitle.short_description='标题'   如果是更改模型字段显示列标题,可以定义模型字段时,设置verbose_name值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性...,并返回所有包含这些词对象,区分大小写(即 icontains 查找:区分大小写包含匹配),其中每个词必须在 search_fields 中至少有一个。

1.3K30

简化 Django 开发八个 Python 包 | Linux 中国

◈   notes 输出你项目里所有带 TODO、FIXME 等标记注释。  Django-extensions 还包括几个有用抽象定义模型时,它们能满足常见模式。...当你需要以下模型时,可以继承这些:◈   TimeStampedModel:这个模型包含了   created 字段   modified 字段,还有一个   save() 方法,适当场景下...◈   ActivatorModel:如果你模型需要像   status、  activate_date    deactivate_date 这样字段,可以使用这个。...它带有一个可选能过滤垃圾邮件表单(也有不过滤普通表单一个 ContactFormView 方法可以覆盖或自定义修改。而且它还能引导你完成模板创建,好让表单正常工作。  ...)提供了视图、表单 URL,支持邮件地址作为用户名认证方式,而且有大量文档记录。

2.9K20

DRF进阶之DRF视图常用功能

DRF视图常用功能 DRF视图 DRF视图介绍 DRF框架中提供了众多通用视图与扩展,以简化视图编写。...View:Django默认视图,负责将视图连接到URL,HTTP请求方法基本调度,之前写视图一般都用这个。...APIView:DRF提供所有视图,继承View并扩展,具备了身份认证、权限检查、流量控制等功能。...,删除,查看 ViewSet GenericAPIView已经完成了许多功能,但会有一个问题,获取所有用户列表单个用户需要分别定义两个视图URL路由,使用ViewSet可以很好解决这个问题,并且实现了路由自动映射...也就是必须每个人区分开,所以就有了用户名来标识,但每次访问页面都要登录,非常麻烦,这就有了会话保持。Cookie+Session就是实现会话保持技术。

4.4K10

Django】当大型项目采用Django框架对于QueryDict以及模板表单在Admin 管理工具使用

QueryDict HttpRequest对象中,GETPOST属性是django.http实例。QueryDict。 QueryDict是一个用户定义,类似于字典。...每个视图函数负责返回一个HttpResponse对象,该对象包含生成响应。 视图层中有两个重要对象:请求对象响应对象。 Admin 管理工具 我们可以自定义管理页面以替换默认页面。...我们只想显示姓名电子邮件部分。...Python,则需要按如下方式进行修改: 通过错误消息Py文件文件路径,…site packages django-2.0-py3.6.eggDjango-db-backends-mysql路径中找到...返回数据是QuerySet类型,类似于列表。它包含满足条件模型对象。可以使用索引下标来检索模型对象。 Pk=3意味着主键=3,这相当于id=3。

1.7K20

Django+xadmin打造在线教育平台(三)

代码 github下载 五、用户注册 主要实现功能 用户输入邮箱、密码验证码,点注册按钮 如果输入不正确,提示错误信息 如果正确,发送激活邮件,用户通过邮件激活后才能登陆 即使注册功能,没有激活用户也不能登陆...,‘register’表明是注册 注册成功跳转到登录界面 5.6.发送激活邮件 Python中已经内置了一个smtp邮件发送模块,Django在此基础上进行了简单地封装,让我们Django环境中可以更方便更灵活发送邮件...如果没有提供,Django使用该EMAIL_HOST_PASSWORD设置值 。 connection:用于发送邮件可选电子邮件后端。如果未指定,将使用默认后端实例。...html_message:如果html_message被提供,所得到电子邮件将是一个 多部分/替代电子邮件message作为 文本/无格式内容类型html_message作为 text / html...#邮箱用户名都可以登录 # 基础ModelBackend,因为它有authenticate方法 class CustomBackend(ModelBackend): def authenticate

4.2K90

用户管理模块之用户登录

创建IUserService接口实现UserServiceImpl 由于在用户管理模块之用户注册已经创建了,所以不用新建了 功能 实现用户登录业务,传入参数是用户名密码 分析 用户登录输入用户名密码...中新建两个异常 用户名不存在异常UserNotFoundException,继承Exception,重写父构造方法 密码匹配异常PasswordNotMatchException,继承Exception...,重写父构造方法 实现 IUserService接口中定义 /** * 实现登录业务 * @param userName 用户名 * @param passWord 密码 * @return...,不可以使用用户名密码直接查询人数,因为sql是区分大小写,但是我们密码是区分大小写,比如select * from t_user where username=?...,这个是不可以直接使用,应该是使用用户名查询返回User对象,然后比较用户输入密码对象中密码是否相同:password.equals(user.getPassWord()) 需要修改前端页面的时候

1.8K30

Django开发常用30个软件包

这个应用支持多种认证体系,比如用户名电子邮件。一旦用户注册成功,它还可以提供从无需认证到电子邮件认证多种账户验证策略。同时,它也支持多种社交账户电子邮件账户。...如果你对 Django 视图很熟悉,你会觉得使用 DRF 构建 REST API 与使用它们很相似,不过 DRF 只针对特定 API 使用场景而设计。.../ 25.django-brace 简介:django 内置 class based view 很 awesome,但还有一些通用视图没有包含在 django 源码中,这个库补充了更多常用视图...视图django 一个很重要也很优雅特性,使用视图可以减少视图函数代码编写量、提高视图函数代码复用性等。.../index.html 点评:深入学习视图可以看Django视图源码分析。

3.3K20

37.Django1.11.6文档

这是因为子类需要一个空间来存储包含在字段数据。 但有时,你可能只想更改 model Python 层行为实现。比如:更改默认 manager ,或是添加一个新方法。...iexact 区分大小写精确匹配 contains 大小写敏感包含关系测试。...,开始位置匹配 例如: Entry.objects.filter(headline__startswith='Lennon') istartswith 区分大小写,开始位置匹配 endswith 区分大小写...拆分搜索查询为单词并返回包含每个单词所有对象,区分大小写,其中每个单词必须在至少一个search_fields。 ...另外,如果列上有索引,有些数据库可能能够对于此查询使用索引,即使它是LIKE 查询。 = 使用'='运算符区分大小写精确匹配。

24.3K80

【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图

基础知识 sqlserver语句区分大小写单双引号吗?... SQL Server 中,标识符(例如表名、列名、数据库名等)默认是区分大小写,但是字符串常量是区分大小写【仅支持英文版双引号("")】。...例如,以下查询是有效: SELECT column1 FROM TableName WHERE column2 = 'Value'; 在这里,column1、TableName Value 区分大小写...,但字符串 'Value' 区分大小写。...级联删除语句,把该视图由它导出所有视图一起删除 删除表时,由该表导出所有视图定义都必须显式地使用DROP VIEW语句删除 【1】删除视图BT_SIS_S1 DROP

13910

Python:Django搭建博客

简介 学完 Django2.x 可以搭建一个个人博客练练手 教程 创建项目 通过 pycharm 创建博客项目与虚拟环境 修改相关设置 允许任何域名 开发测试时候可以将这里填为 *,后期部署上线后修改为指定域名即可...Django 安装成功, 访问 Django-admin 界面, 浏览器中输入 127.0.0.1:8000/admin,看到 Django 管理,需要输入用户名密码,输入用户名密码后可以跳转到 Django...再次进入 admin,选择文章修改就可以看到集成 markdown 编辑器了 实现视图 首先找到一套你喜欢模版,将模版下载下来,html 部分放入 templates 中,其他静态文件放入 static...可以写一个简单视图,然后开着 Django 一边抽取一遍调试 接下来实现首页试图 首先在 urls.py 中配置路由 DjangoBlog/u rls.py ... from blog import...这样当我们重新访问 127.0.0.1:8000 时,我们修改前端代码就被加载了 接下来我们实现将分类加载,将 index 视图修改为一下代码 blog/views.py ... from .models

54900

第 5 篇:用视图集,简化你代码

使用视图一个更大好处,就是可以配合 django-rest-framework 提供路由器(router),自动生成 API URL,不需要我们再手工将 URL 模式视图函数绑定了。...视图集也有 2 个:ViewSet GenericViewSet,前者是最基本视图,后者拓展自前者,拓展了很多 Web 开发中通用逻辑。...提供 SimpleRouter DefaultRouter 两个路由器,后者是对前者拓展,因此通常情况下都使用后者。...第二个参数就是视图集,第三个参数 basename 用于指定视图集生成视图函数名前缀。 django URL 中,一条路由通常由 URL 模式,对应视图函数视图函数名组成。...不过,根据 Python 之禅,显式优于隐式,因此即使你设置 basename django-rest-framework 默认生成一样,也比指定要好。

80510

【愚公系列】2022年01月 Django商城项目12-登录界面-登录退出功能实现

文章目录 一、登录功能实现 1.使用django自带用户登录模型配置 2.UsernameMobileModelBackend校验函数源码 3.登录业务逻辑实现 4.用户名展示 5.实际效果 二、...退出功能实现 1.退出业务逻辑实现 总结 一、登录功能实现 1.使用django自带用户登录模型配置 # 允许自定义用户模型 AUTH_USER_MODEL = 'users.User' #...# ① 使用django认证后端 # ② 我们可以自己查询数据库( 根据用户名/手机号查询对应user用户,再比对密码) from django.contrib.auth...模板会自动嵌入request对象,可以模板中直接使用cookie 具体用户名展示视图写法如下: <div...el: '#app', // 修改Vue变量读取语法,避免django模板语法冲突 delimiters: ['[[', ']]'], data: { host

41710
领券