【问题标题】:What does it mean to normalize an email address?标准化电子邮件地址意味着什么?
【发布时间】:2015-03-12 06:26:43
【问题描述】:

在这个example 中,Django 讨论了使用self.normalize_email(email) 规范化电子邮件地址,其中selfBaseUserManager。当我搜索“规范化电子邮件”时,这似乎是所有平台的一种做法。我看到了如何做的教程,但没有真正解释它是什么以及它的用途。

【问题讨论】:

    标签: django email


    【解决方案1】:

    规范化电子邮件的一个应用是防止多次注册。如果您的应用程序允许公众注册,您的应用程序可能会吸引“不友好”类型,他们可能会尝试使用相同的电子邮件地址多次注册,方法是混合符号、大写和小写字母以制作相同电子邮件地址的变体.

    来自Django's repositorynormalize_email 的文档字符串如下:

    通过小写域名部分来规范化电子邮件地址。

    此方法的作用是将电子邮件的域部分小写,因此这部分为case insensitive,因此请考虑以下示例:

    >>> from django.contrib.auth.models import BaseUserManager
    >>> BaseUserManager.normalize_email("user@example.com")
    user@example.com
    >>> BaseUserManager.normalize_email("user@EXAMPLE.COM")
    user@example.com
    >>> BaseUserManager.normalize_email("user@example.COM")
    user@example.com
    >>> BaseUserManager.normalize_email("user@EXAMPLE.com")
    user@example.com
    >>> BaseUserManager.normalize_email("user@ExAmPlE.CoM")
    user@example.com
    

    正如您所见,所有电子邮件都是等效的,因为@ 之后的大小写无关紧要。

    【讨论】:

      【解决方案2】:

      对于电子邮件地址,foo@bar.comfoo@BAR.com 是等效的;根据 RFC 规范,域部分不区分大小写。规范化意味着提供规范的表示,以便任何两个等效的电子邮件字符串规范化为同一事物。

      comments on the Django method解释:

      通过小写域名部分来规范化电子邮件地址。

      【讨论】:

        猜你喜欢
        • 2017-05-05
        • 2021-07-10
        • 1970-01-01
        • 2015-09-18
        • 2012-10-10
        • 2020-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多