Rest Countries Info APP è un piccolo progetto costruito con Django che utilizza la API di REST Countries e la API di Wikipedia per visualizzare le informazioni dettagliate dei paesi del mondo. Questo progetto è stato sviluppato con Python 3.12, JavaScript, Bootstrap 5, HTML5 e CSS3.
Assicurati di avere Python installato nel tuo sistema, per verificarlo apri la riga di comando ed esegui questo comando:
py --version # Windows
python --version # Unix/macOS
Se non hai Python installato visita https://www.python.org/downloads/ e scarica l'ultima versione.
- Clona la repository:
git clone https://github.com/davevad93/rest-countries-django-app.git
- Entra nella cartella della repository:
cd rest-countries-django-app
- Crea un ambiente virtuale:
py -m venv venv # Windows
python -m venv venv # Unix/macOS
- Attiva l'ambiente virtuale:
venv/Scripts/activate.bat # Windows
source venv/bin/activate # Unix/macOS
- Entra nella cartella del progetto:
cd myproject
- Installa i pacchetti necessari:
py -m pip install -r requirements.txt # Windows
python -m pip install -r requirements.txt # Unix/macOS
- Genera una chiave segreta casuale e salvala in un file .env:
(Questa app non utilizza un metodo di autenticazione e non immagazzina dati sensibili, ma in ogni caso è sempre meglio creare una chiave segreta e salvarla in una variabile d'ambiente).
# PASSO 1: Apri la Shell di Python nel terminale.
py manage.py shell # Windows
python manage.py shell # Unix/macOS
# PASSO 2: Importa la funzione get_random_secret_key().
from django.core.management.utils import get_random_secret_key
# PASSO 3: Genera la chiave segreta con la funzione get_random_secret_key().
print(get_random_secret_key())
# Copia la chiave.
# PASSO 4: Chiudi la Shell di Python.
exit()
# PASSO 5: Crea il file .env con la variabile d'ambiente "SECRET KEY" e copia la chiave generata nel PASSO 3.
echo SECRET_KEY = 'Incolla la chiave generata nel PASSO 3' > .env
- Avvia il server di sviluppo:
py manage.py runserver # Windows
python manage.py runserver # Unix/macOS
- Accedi all'applicazione con il tuo browser web visitando
http://localhost:8000
.
Potrebbero esserci delle inconsistenze riguardo alle informazioni di certi paesi. Questo è dovuto al fatto che per mostrare le informazioni basiche di ogni paese (p. e. popolazione) ho usato la API di Rest Countries (ultimo aggiornamento nel 2021) mentre per mostrare le descrizioni dei paesi ho usato la API di Wikipedia (che viene aggiornata costantemente). Per fare un esempio su Rest Countries la Cina risulta ancora come il paese più popolato, peró nel 2022 l'India la ha superato, essendo al giorno d'oggi il paese con più abitanti al mondo.
-
REST Countries API per i dati dei paesi mostrati nella app.
-
Wikipedia API per le descrizioni dei paesi mostrati nella app.
-
Font Awesome per l'icona fa-search utilizzata nella barra di ricerca della app.
-
Awesome Badges per le badge della sezione "Sviluppato con".
Alcuni stemmi dei paesi mostrati in questo progetto non provengono dal JSON della API di REST Countries perche certi valori chiave sono vuoti, quindi ho esportato gli stemmi mancanti da Wikimedia Commons. La maggior parte di essi sono di dominio pubblico e non hanno bisogno di attribuzione d'autore ma alcuni sono sotto licenza di Creative Commons, perciò ne elencherò gli autori dando i dovuti crediti.
-
Demidow, Coat of arms of the British Indian Ocean Territory, CC BY-SA 3.0
-
Squiresy92 & Sodacan, Coat of arms of Norfolk Island, CC BY-SA 4.0
-
Heralder, Coat of arms of the Commonwealth of Puerto Rico, CC BY-SA 3.0
-
Government of the Collectivity of Saint-Martin, Local flag of the Collectivity of Saint Martin, Licence Ouverte 2.0
-
Josedar, Coat of arms of the Turks and Caicos Islands, CC BY-SA 4.0
Ogni tipo di contributo è benvenuto! Se trovi qualche problema o hai un suggerimento per migliorare il progetto, per favore apri una issue o esegui il fork del repository e fai una pull request. Non dimenticare di dare una stella al progetto. Grazie mille!
Questo progetto è sotto Licenza MIT. Per saperne di più, dai un'occhiata al file di LICENZA.