Skip to main content

A Django app to query the Swiss Post API for postcodes and localities.

Project description

city-ch-autocomplete is a Django helper app to add an autocomplete widget in an address form that searches postal codes and locality names through the post.ch API.

It depends on Bootstrap 5 to produce the autocomplete widget.

Quick start

  1. Add “city_ch_autocomplete” to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
        ...,
        "city_ch_autocomplete",
    ]
  2. Include city_ch_autocomplete urls to your urlpatterns:

    urlpatterns = [
        ...,
        path("", include("city_ch_autocomplete.urls")),
        ...,
    ]
  1. Get an API access from the Swiss Post (starting from https://developer.apis.post.ch/ui/home). Note the process can take some time. Then add the POST_API_USER and POST_API_PASSWORD settings to your project.

    Optionally you can get the data from a CSV and put it in a database table. Read below for more details.

  2. In the target form(s) of your project, add the CityChMixin to your form inheritance and a CityChField as a form field:

    from city_ch_autocomplete.forms import CityChField, CityChMixin
    
    class YourForm(CityChMixin, forms.ModelForm):
        class Meta:
            fields = [..., '<my_postcode_model_field>', '<my_city_model_field>', ...]
        city_auto = CityChField(...)
        postal_code_model_field = '<my_postcode_model_field>'
        city_model_field = '<my_city_model_field>'

    Don’t forget to include {{ form.media }} in the templates where you are using the form.

Searching from the database

If for some reason, you would prefer searching postcodes/names from a database table instead from the Swiss Post API, you can populate the PLZdb model with external data. The PLZdb.import_from_csv(csv_path) class method allows for importing such data.

A good CSV data source is https://www.swisstopo.admin.ch/fr/repertoire-officiel-des-localites (choose the csv ending with 2056.csv).

Then set the POST_API_USER setting to None and the view will search from the database instead.

Geographic city filter

If your database is spatially enabled, the PLZdb.objects manager allows for searching cities from within a distance around another city:

PLZdb.objects.filter_cities_around(<plz value>, <km>)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

city_ch_autocomplete-0.4.9.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

city_ch_autocomplete-0.4.9-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file city_ch_autocomplete-0.4.9.tar.gz.

File metadata

  • Download URL: city_ch_autocomplete-0.4.9.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for city_ch_autocomplete-0.4.9.tar.gz
Algorithm Hash digest
SHA256 df48aca000d59eac405a507bf2f45509281c78a53645ffb1d1be493a91656fe0
MD5 b735e03472cee9af96907fd1df552f06
BLAKE2b-256 74b38fa1af2de4568b21913c223e464af353b91fa9877af1918d106c557576f3

See more details on using hashes here.

File details

Details for the file city_ch_autocomplete-0.4.9-py3-none-any.whl.

File metadata

File hashes

Hashes for city_ch_autocomplete-0.4.9-py3-none-any.whl
Algorithm Hash digest
SHA256 d9a7dfe74b5996757605afd2c12fd7f99a25bc13ad6a2e206d8f361520be4c77
MD5 047843a6cac4c0e9c4433fa56044ab44
BLAKE2b-256 464a81df930d3f06336a55410b97577692d7a0e37ab45dede62a59e49f803d4d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page