为了账号安全,请及时绑定邮箱和手机立即绑定

以更具可读性的格式显示电话号码

以更具可读性的格式显示电话号码

猛跑小猪 2022-10-05 09:22:10
请告诉我如何正确解决以下问题数据库中有一个电话号码。在网站上,它以与数据库中记录的相同形式显示+1234567890我需要这个数字看起来像这样,在网站页面上,无需在数据库中进行修改+(123) 456-7890views.pydef Data(request):     card = Cards.objects.filter(is_published=True)         context = {'card': card}                 return render(request, 'templates/cards.html', context)models.pyphone = models.CharField(max_length=12, null=True)卡片.html{{ card.phone }}谢谢!
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

Django不会自己格式化数字。但是,您可以构建自己的函数来执行此操作。考虑使用(链接)。在 models.py 中为此创建另一个函数:python-phonenumbers


import phonenumbers


class Cards:

    phone = models.CharField(max_length=12, null=True)

    .....


    def formatted_phone_number(self, country=None):

        rtval = phonenumbers.parse(self.phone, country)

        return rtval

然后在您的:template


{{ card.formatted_phone_number }}

注意:不能直接从模板传递参数。因此,该函数必须事先知道您将使用哪种国家/地区格式。


查看完整回答
反对 回复 2022-10-05
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您可以编写此帮助程序函数:


def insert_str(string, str_to_insert, index):

    return string[:index] + str_to_insert + string[index:]

,然后使用它来在需要时插入字符。如果括号的位置是固定的(每个电话号码都相同,如您提供的示例所示),那么您可以简单地执行以下操作:


phone = insert_str(phone, '(', 1)

phone = insert_str(phone, '(', 5) # there's already an extra '('

phone = insert_str(phone, ' ', 6)

phone = insert_str(phone, '-', 10)


查看完整回答
反对 回复 2022-10-05
  • 2 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信