📅  最后修改于: 2023-12-03 15:23:08.316000             🧑  作者: Mango
在 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 中,我们可以使用内置表达式 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.Cast
和 django.db.models.Value
来将其转换为字符串。
使用正则表达式和 Django 表达式都可以提取电子邮件地址,具体使用取决于需求和使用场景。正则表达式更加灵活,但使用 Django 表达式可以更加方便地与模板和视图整合。