我正在尝试使用django_tables2
创建自定义列类型,以便当结果是有效的电子邮件地址时,可以将联系人详细信息显示为mailto:
链接,否则将显示标准文本。 / p>
我遇到的问题是,我的值似乎以迭代字符的形式返回,并且按照下面的代码,电子邮件地址的第一个字符被呈现为mailto:
的一部分,而第二个字符列中显示了电子邮件地址的。除了validate_email
之外,我还尝试了if "@" in
和regex
,它们都返回相同的迭代字符结果。
class ContactColumn(tables.Column):
def render(self,value):
try:
validate_email(value)
return format_html('''<a href="mailto:{}">{}</a>''',*value)
except ValidationError:
return value
任何人都可以为我提供正确的方向,以指示如何根据有效的电子邮件地址成功呈现mailto:
链接或仅标准文本吗?任何帮助深表感谢!
答案 0 :(得分:0)
这里的问题是您的*value
参数。
星号表示将序列(此处为字符串)解压缩为其各个部分(字符)并将其用作参数。 (搜索“ Python参数解压缩”以了解更多信息。)
相反,请执行以下操作:
format_html('''<a href="mailto:{}">{}</a>''', value, value)