【问题标题】:Django EmailField and full email address with first and last nameDjango EmailField 和带有名字和姓氏的完整电子邮件地址
【发布时间】:2019-05-22 01:00:28
【问题描述】:

我想在表单中使用 EmailField。但是,不仅仅是存储

support@acme.com

我要收藏

"ACME Support" <support@acme.com>

原因是,当我发送电子邮件时,我希望出现一个“友好名称”。 这个可以吗?

【问题讨论】:

    标签: django email


    【解决方案1】:

    我们使用 Django 的 email 字段,然后使用一个属性来渲染邮件中的友好名称。

    from django.utils.html import escape
    from django.utils.safestring import mark_safe
    
    class MyModel(models.Model):
        email_address = models.EmailField()
        full_name = models.CharField(max_length=30)
        ...
    
        @property
        def friendly_email(self):
            return mark_safe(u"%s <%s>") % (escape(self.fullname), escape(self.email_address))
    

    【讨论】:

    • escape 函数在哪里定义?
    • 我假设mark_safe 是来自django.utils.safestring 的那个:) 请更新答案,以免新手和新人感到困惑。
    【解决方案2】:

    为什么不将友好名称存储在单独的 CharField 中?或者,您可以将 EmailField 子类化并构建您自己的验证。见http://docs.djangoproject.com/en/1.1/howto/custom-model-fields/#howto-custom-model-fields

    【讨论】:

    • 我要走这条路。但是,这让我更想知道 EmailField 是否可以做到,或者我做错了什么。
    • EmailField 基本上是一个 CharField,但仅针对普通电子邮件地址进行验证——没有名称或尖括号。所以,不,你没有做错任何事。
    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多