Die besten Möglichkeiten, Telefonnummern in Django zu speichern
-
Speichern von Telefonnummern mit dem
PhoneNumberField
einer Drittanbieter-Django-App - Speichern Sie Telefonnummern mit einem Validator und einem Django-Modell
Beim Erstellen einer Datenbank treten häufig Probleme auf, bei denen wir den Feldtyp für bestimmte Daten nicht festlegen können. Meistens sind wir beim Organisieren einiger Feldtypen verwirrt. Zum Beispiel: Wenn wir eine eindeutige Zahl speichern müssen, müssen wir zwischen einem Zeichenfeld oder einem Integer-Feld wählen. Jeder Feldtyp hat seine eigenen Vor- und Nachteile.
Eine dieser Daten ist eine Telefonnummer; Beim Speichern einer Telefonnummer müssen wir sicherstellen, dass das Feld Telefonnummern von überall auf der Welt speichern kann. Wir müssen sicherstellen, dass wir die Landesvorwahl zusammen mit der Telefonnummer selbst speichern.
In diesem Artikel werden einige der besten Möglichkeiten zum Speichern einer Telefonnummer in Django beschrieben.
Speichern von Telefonnummern mit dem PhoneNumberField
einer Drittanbieter-Django-App
Um Telefonnummern zu speichern, können wir eine Django-App oder -Bibliothek eines Drittanbieters verwenden, die dieses Feld implementiert: PhoneNumberField
.
Das GitHub-Repository dieser Bibliothek oder Anwendung finden Sie [hier].
Laut der offiziellen README
kann diese Django-Bibliothek Telefonnummern validieren und konvertieren. Diese Bibliothek verbindet eine andere Python-Bibliothek, [python-phonenumbers], die eine Portierung von [Googles libphonenumber]-Bibliothek ist, die die Handhabung von Android-Telefonnummern unterstützt.
Installieren Sie die Django-Bibliothek
Diese Django-Bibliothek kann mit dem folgenden pip
-Befehl heruntergeladen werden:
pip install django-phonenumber-field[phonenumbers]
Da es sich in Bezug auf die Größe um eine umfangreiche Bibliothek handelt, möchten Sie möglicherweise die leichtere Version herunterladen. Um die leichtere Version dieser Bibliothek herunterzuladen, verwenden Sie den folgenden Befehl:
pip install django-phonenumber-field[phonenumberslite]
Richten Sie die Django-Bibliothek ein
Um diese App oder Bibliothek zu verwenden, müssen wir sie der Datei settings.py
unseres Projekts hinzufügen. Der App-Name muss in den INSTALLED_APPS
wie folgt eingetragen werden:
INSTALLED_APPS = [
# Other apps
"phonenumber_field",
]
Verwendung von die Django-Bibliothek
Diese Bibliothek verfügt über ein Modellfeld PhoneNumberField
, das zum Speichern von Telefonnummern verwendet werden kann. Unser Modell wird ungefähr so aussehen wie das folgende:
from phonenumber_field.modelfields import PhoneNumberField
class Person(models.Model):
firstName = models.CharField(max_length=100)
middleName = models.CharField(max_length=100)
lastName = models.CharField(max_length=100)
phoneNumber = PhoneNumberField(unique=True, null=False, blank=False) # Here
secondPhoneNumber = PhoneNumberField(null=True, blank=True) # Here
Das Feld PhoneNumberField
basiert intern auf einem CharField
-Space und speichert Nummern in Form einer Zeichenkette, basierend auf den internationalen Rufnummernstandards.
Weitere Informationen zu dieser Bibliothek finden Sie in der offiziellen Dokumentation.
Um nun auf die Werte dieses Felds zuzugreifen, schreiben wir eine Python-Anweisung, die ungefähr so lautet:
person = models.Person.objects.get(id=25)
phoneNumber = person.phoneNumber.as_e164
Hier wird die Rufnummer als String in einem E.164
-Standard wegen as_e164
zurückgegeben. E.164
ist ein internationaler Standard zum Speichern von Telefonnummern. Mehr dazu könnt ihr [hier] lesen.
Speichern Sie Telefonnummern mit einem Validator und einem Django-Modell
Wenn Sie keine Django-App eines Drittanbieters verwenden und Telefonnummern mit Django-Modellen speichern möchten, können Sie einen Validator
und ein CharField
verwenden. Der folgende Code stellt dasselbe dar:
from django.core.validators import RegexValidator
class Person(models.Model):
phoneNumberRegex = RegexValidator(regex=r"^\+?1?\d{8,15}$")
phoneNumber = models.CharField(
validators=[phoneNumberRegex], max_length=16, unique=True
)
Der Validator phoneNumberRegex
validiert den eingegebenen Wert für das CharField
. Auch hier werden die Rufnummern im Format E.164
gespeichert.
Das CharField
hat eine maximale Länge von 16 Zeichen, da der E.164
-Standard maximal 15 Stellen für eine Nummer zulässt. Fünfzehn Zeichen enthalten sowohl die Landesvorwahl als auch die Telefonnummer. Ein zusätzliches Zeichen ist für das +-Zeichen reserviert, das das Präfix für den Ländercode darstellt.