📜  在 django 中使用表达式提取电子邮件地址 - Python (1)

📅  最后修改于: 2023-12-03 15:23:08.316000             🧑  作者: Mango

在 Django 中使用表达式提取电子邮件地址

在 Django 中,如果我们需要从文本中提取电子邮件地址,可以使用正则表达式或 Django 的内置表达式 email 来实现。

正则表达式提取电子邮件地址

以下是一个使用正则表达式提取电子邮件地址的示例代码片段:

import re

text = "联系我:john@example.com 或者找我朋友:jane@example.com"

emails = re.findall(r'[\w.-]+@[\w.-]+', text)

print(emails)  # ['john@example.com', 'jane@example.com']

其中, re.findall() 方法可以在每个匹配的字符串之间返回一个列表,而正则表达式是 [\w.-]+@[\w.-]+ ,该表达式将匹配任何以 @ 符号分隔的电子邮件地址。

Django 表达式提取电子邮件地址

在 Django 中,我们可以使用内置表达式 email 来提取电子邮件地址。

在模板中,可以这样使用:

{% for email in emails %}
    {{ email|email }}
{% endfor %}

而在视图中,则可以这样使用:

from django.db.models import F
from django.db.models.functions import Cast
from django.db.models import Value
from django.core.mail import EmailMessage

EmailMessage(
    subject='Hello',
    body='How are you?',
    to=['{{ email|email }}']
).send()

需要注意的是,在视图中使用 email 表达式时,需要添加 django.db.models.functions.Castdjango.db.models.Value 来将其转换为字符串。

总结

使用正则表达式和 Django 表达式都可以提取电子邮件地址,具体使用取决于需求和使用场景。正则表达式更加灵活,但使用 Django 表达式可以更加方便地与模板和视图整合。