在Django中存储电话号码时,应将其存储为原始数字还是使用Django.contrib.localflavor?

2024-04-29 05:42:20 发布

您现在位置:Python中文网/ 问答频道 /正文

标题可能有点混乱,但请让我解释一下:

当前,当我存储带有原始数字的电话号码时,例如5554441234。然后在我的模板中,我将把这个数字“格式化”成类似555-444-1234的格式。

我意识到在Django的^{}中,有一个US phone number field可以检查字符串是否是XXX-XXX-XXXX格式。

所以我的问题是,我是应该将电话号码输入为原始数字,然后在模板中格式化,还是应该使用localflavor以格式化的方式输入电话号码?

如果我选择后者,那么XXX-XXX-XXXX格式限制是应用于^{}级别还是Django管理页面?


Tags: django字符串模板标题numberfield格式phone
3条回答

试试Django phoneno。字段。它可以在Python网站上找到。您需要使用 pip install django phonenumber字段

https://pypi.python.org/pypi/django-phonenumber-field/0.2a3

如果您使用的是forms框架(例如,在Django管理中),则将在应用程序级别验证输入。因此,要在表单中输入电话号码,必须将其格式化为XXX-XXX-XXXX

在数据库级别上,它只是一个CharField,所以数据库不检查格式。

按输入的方式存储,如有必要,只在空白处加条。用户格式化其数字的方式存储语义信息,通过规范化这些信息,您不希望丢失语义信息。在美国,格式XXX-XXX-XXXX非常常见,但其他地区使用完全不同的格式。例如,在我居住的地方,一些常见的格式是:XX-XXX XXX XXXXX/XXX XX XX+46(0)70-XXX XX XX等等。

显示给用户的数字格式应与输入的格式相同,否则他或她会认为该数字已被篡改,或者如果该数字的格式与用户习惯的格式不同,他或她甚至可能无法识别该数字。另请参见此讨论:http://discuss.fogcreek.com/dotnetquestions/default.asp?cmd=show&ixPost=6079&ixReplies=6

相关问题 更多 >