【发布时间】:2011-05-07 20:02:07
【问题描述】:
我应用了一个模板过滤器,它从电子邮件地址中提取域。在模板文件中我有这个代码:
{% for email in user_list %}
<p>
{{email.email}} corresponds to this domain:
<b> {{email.email|domain}} </b>
</p>
{% endfor %}
目前所有域名都加粗。我想要做的是仅将那些具有“有效”电子邮件扩展名的电子邮件地址加粗(例如,仅在域“@gmail.com”中的那些)。如何应用 if 或 ifequal 语句来执行此操作?
例如,这是我希望它具有的逻辑--
{% for email in user_list %}
<p>
{{email.email}} corresponds to this domain:
{% if domain = 'specified extension' %}
<b> {{email.email|domain}} </b>
{% else %}
{{ email.email|domain }}
{% endif %}
</p>
{% endfor %}
更新:
好的——我通过在models.py 中创建一个自定义模型来完成这项工作,就像这样——
class Table(models.Model):
name = models.CharField(max_length=50)
email = models.CharField(max_length=50)
def valid_email(self):
verified = ['yahoo.com','gmail.com']
domain = self.email.split('@')[1]
return domain in verified
并且在模板中index.html --
{% for email in user_list %}
<p>
{{email.email}} corresponds to this domain:
{% if email.valid_email %}
<b>{{ email.email|domain}}</b>
{% else %}
{{ email.email|domain}}
{% endif %}
</p>
{% endfor %}
这现在很好用,但我担心当我需要更新 models.py 并篡改已验证的电子邮件列表时。哪里有更好的地方来保存这个valid_emails() 函数,以便我可以轻松更新它?然后我将如何引用模板中的函数(如果与当前不同)?谢谢。
【问题讨论】:
-
不要在模板中硬编码那些有效域!
标签: django