Die besten Möglichkeiten, Telefonnummern in Django zu speichern

Vaibhav Vaibhav 18 Oktober 2021
  1. Speichern von Telefonnummern mit dem PhoneNumberField einer Drittanbieter-Django-App
  2. Speichern Sie Telefonnummern mit einem Validator und einem Django-Modell
Die besten Möglichkeiten, Telefonnummern in Django zu speichern

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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.