Normalisierung von Straßenadressen in Django / Python

8

Ich habe ein Django-Formular, bei dem eines der Felder ein TextInput für eine Straßenadresse ist.

Ich möchte die Daten normalisieren. Zum Beispiel:

%Vor%

Oder so ähnlich. Ich verwende bereits geopy für die Geokodierung. Vielleicht könnte das helfen?

Auch: Wo sollte ich normalisieren? Im Datenbankmodell oder in der Clean-Funktion des Formularfelds?

    
Belmin Fernandez 29.01.2011, 17:22
quelle

4 Antworten

4

Der zuverlässigste Weg, dies zu tun, besteht darin, einen echten Verifikationsdienst zu nutzen. Es wird nicht nur die Adresskomponenten gemäß USPS-Standards standardisieren (normalisieren) (siehe Veröffentlichung 28 ) >), aber Sie werden auch sicher sein, dass die Adresse real ist.

Volle Offenlegung: Ich arbeite für SmartyStreets, die genau so einen Service bietet. Hier ist ein sehr einfacher Python-Beispielcode, der zeigt, wie Sie unseren Service über eine HTTP-GET-Anfrage nutzen können:

Ссылка

    
mdwhatcott 26.10.2011, 14:32
quelle
4

Ich habe kürzlich ein Street-Address Python-Modul erstellt, und StreetAddressFormatter kann verwendet werden, um Ihre Adresse zu normalisieren.

    
png 27.11.2012 19:06
quelle
2

Eine Möglichkeit wäre, Geopy zu verwenden, um die Adresse bei jemandem wie Yahoo oder Google Maps zu suchen, der dann die vollständige Adresse der Person (en) zurückgibt, mit der sie übereinstimmen. Möglicherweise müssen Sie darauf achten, dass Apartmentnummern in der zurückgegebenen Adresse abgeschnitten werden (z. B. "221 Amsterdam Av # 330" wird zu "221 AMSTERDAM AVENUE"). Darüber hinaus erhalten Sie auch die Stadt / Land / Staat Informationen, die der Benutzer auch abgekürzt oder falsch geschrieben haben kann.

Falls mehrere Übereinstimmungen vorhanden sind, können Sie den Benutzer zur Eingabe einer Rückmeldung über die Adresse auffordern. Wenn keine Übereinstimmungen vorhanden sind, können Sie den Benutzer darüber informieren und möglicherweise zulassen, dass die Adresse trotzdem gespeichert wird. Dies hängt davon ab, wie wichtig eine gültige Adresse ist und wie viel Vertrauen Sie in die Gültigkeit der Adresssuche-Anbieter setzen. p>

Was diese Normalisierung in der Form vs. Modell anbelangt, weiß ich nicht, was die bevorzugte Django-Art ist, Dinge zu tun, aber meine Präferenz liegt in der Form, zum Beispiel:

%Vor%

Sie können diese Nachschlagefunktion in das Modell (oder eine Datei helpers.py) werfen, falls Sie sie in anderen Bereichen wiederverwenden möchten

    
Dolan Antenucci 29.01.2011 18:41
quelle
2

So habe ich das angesprochen (kein Wortspiel beabsichtigt):

%Vor%

Ich verwende dann Place.display_address in Vorlagen. Dies ermöglicht mir, die ursprünglichen vom Benutzer übermittelten Daten unverändert in der Datenbank zu belassen und einfach display_address zu verwenden, wenn ich eine normalisierte Anzeigeversion haben möchte.

Öffnen Sie für Kommentare / Vorschläge.

    
Belmin Fernandez 07.02.2011 04:51
quelle