Open In App

Weather app using Django | Python

Improve
Improve
Like Article
Like
Save
Share
Report

In this tutorial, we will learn how to create a Weather app that uses Django as backend. Django provides a Python Web framework based web framework that allows rapid development and clean, pragmatic design.

Basic Setup –
Change directory to weather –

cd weather

Start the server –

python manage.py runserver

To check whether the server is running or not go to a web browser and enter http://127.0.0.1:8000/ as URL. Now, you can stop the server by pressing

ctrl-c

Implementation :

 python manage.py startapp main

Goto main/ folder by doing :

cd main 

and create a folder with index.html file: templates/main/index.html

Open the project folder using a text editor. The directory structure should look like this :

Now add main app in settings.py

Edit urls.py file in weather :




from django.contrib import admin
from django.urls import path, include
  
  
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('main.urls')),
]


edit urls.py file in main :




from django.urls import path
from . import views
  
urlpatterns = [
         path('', views.index),
]


edit views.py in main :




from django.shortcuts import render
# import json to load json data to python dictionary
import json
# urllib.request to make a request to api
import urllib.request
  
  
def index(request):
    if request.method == 'POST':
        city = request.POST['city']
        ''' api key might be expired use your own api_key
            place api_key in place of appid ="your_api_key_here "  '''
  
        # source contain JSON data from API
  
        source = urllib.request.urlopen(
                    + city + '&appid = your_api_key_here').read()
  
        # converting JSON data to a dictionary
        list_of_data = json.loads(source)
  
        # data for variable list_of_data
        data = {
            "country_code": str(list_of_data['sys']['country']),
            "coordinate": str(list_of_data['coord']['lon']) + ' '
                        + str(list_of_data['coord']['lat']),
            "temp": str(list_of_data['main']['temp']) + 'k',
            "pressure": str(list_of_data['main']['pressure']),
            "humidity": str(list_of_data['main']['humidity']),
        }
        print(data)
    else:
        data ={}
    return render(request, "main/index.html", data)


You can get your own API key from : Weather API

Navigate to templates/main/index.html and edit it: link to index.html file

Make migrations and migrate it:

python manage.py makemigrations
python manage.py migrate

now let’s run the server to see your weather app.

python manage.py runserver



Last Updated : 25 May, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads