« Back to All Blogs CurrencyFreaks Currency API Integration with Django

CurrencyFreaks Currency API Integration with Django


CurrencyFreaks Currency API Integration with Django

Exchange rates are integral to the world's economy. This connection between currencies is even more important today. They are useful for trade, e-commerce, vacations, and financial services. Both businesses and private users need access to current exchange rates at all times. Exchange rate APIs simplify this process with accuracy and ease.

Django is a security-enabled web framework built with Python. It is ideal for developers creating dynamic applications with real-time currency data. This blog will discuss Django's fundamentals and applications. It will also explain why Django is a good choice for currency API integration. Additionally, the blog includes a step-by-step guide for integrating the CurrencyFreaks Currency Conversion API.

What is Django?

Django is a free and open-source web application framework. It is written in Python and follows an MVC architecture pattern.

Django focuses on simplicity and speed in app building. It adheres to the DRY (Don't Repeat Yourself) principle. This keeps the code neater and developers more efficient.

The framework has built-in modules for common tasks. These include user authentication, database integration, URL management, and security features. Django also mitigates general-purpose threats like XSS and CSRF.

It enhances security and speeds up web development. Its scalability and strong community support make it appealing for developers.

currency converter api integration with Django to get historical exchange rates or historical data

Real-Life Applications Using Django

Django is widely used in various industries. Social networking sites like Instagram rely heavily on it. Its scalability supports millions of users without issues, making it suitable even for exchange rate conversions and financial tools.

E-commerce platforms like Shopify use Django. It helps manage internal databases, customer sales, and hidden fees professional level, ensuring smooth operations.

Content management systems (CMS) like Wagtail and Mezzanine are developed with Django. It also powers financial applications, booking systems, and education-based websites. Applications like these often benefit from integration with reliable sources like the European Central Bank for accurate data.

Django's flexibility and built-in security make it ideal. It supports high-end web-based application development with ease and accommodates features such as product management feature requests and a priority roadmap input, enhancing its adaptability for diverse use cases.

Why Should You Choose Django for currency API Integration?

Django is excellent for currency exchange API integration. It simplifies API requests through pre-installed modules, making it suitable for managing historical rates and monthly requests efficiently. This ensures fast retrieval and processing of currency data without hidden fees.

Its ORM (Object Relational Mapper) integrates seamlessly with various databases. This improves storage and data management, supporting tasks such as international sales for e-commerce stores and international brands.

Django prioritizes application security. It protects against threats like XSS, CSRF, and SQL injection. Users remain safe during transactions, even with a high requests volume.

Caching solutions enhance data-loading speed. Frequently changing views load without delays, which is critical for annual billing and quarterly briefing calls in business environments.

Django's modular structure allows easy modifications. Applications can be updated as needed for business requirements, offering platinum support click solutions for enhanced customer satisfaction.

The framework suits projects of any size. It handles real-time currency exchange rate applications effectively, including features like historical rates and high-volume monthly requests.

Currency APIs like CurrencyFreaks integrate seamlessly with Django. They provide up-to-date foreign exchange information for various applications. This includes international sales, financial transactions, and comprehensive currency exchange solutions.

How Do You Integrate CurrencyFreaks currency API with Django?

1. Set Up the Django Project

Step 1.1: Install Django

Install Django using pip:

pip install django

Step 1.2: Create a Django Project

Create a new Django project named currency_exchange:

django-admin startproject currency_exchange

cd currency_exchange

Step 1.3: Create a Django App

Create an app named exchange within your project:

python manage.py startapp exchange

2. Configure the Django Project

Step 2.1: Register the App

In currency_exchange/settings.py, add the exchange app to INSTALLED_APPS:

INSTALLED_APPS = [

    ...,

    'exchange',

]

Step 2.2: Set Up URLs

Project URLs (currency_exchange/urls.py)

Update your urls.py file to include the app URLs and a homepage route:

from django.contrib import admin

from django.urls import path, include

from django.views.generic import TemplateView

urlpatterns = [

    path('admin/', admin.site.urls),

    path('api/', include('exchange.urls')),  # API routes

    path('', TemplateView.as_view(template_name='exchange/index.html'), name='home'),  # Homepage

]

App URLs (exchange/urls.py)

Create a new urls.py file in the exchange app directory and add API routes for fetching currency data.

from django.urls import path

from . import views

urlpatterns = [

    path('supported-currencies/', views.get_supported_currencies, name='supported_currencies'),

    path('convert/', views.convert_currency, name='convert_currency'),

]

3. Backend Logic for APIs

Step 3.1: Add Views

In exchange/views.py, add the following views to handle API requests:

from django.http import JsonResponse

import requests

def get_supported_currencies(request):

    api_key = 'your_currencyfreaks_api_key'  # Replace with your API key

    url = 'https://api.currencyfreaks.com/v2.0/supported-currencies'

    response = requests.get(url)

    if response.status_code == 200:

        return JsonResponse(response.json())

    return JsonResponse({'error': 'Failed to fetch supported currencies'}, status=500)

def convert_currency(request):

    api_key = 'your_currencyfreaks_api_key'  # Replace with your API key

    from_currency = request.GET.get('from', 'USD')

    to_currency = request.GET.get('to', 'EUR')

    amount = float(request.GET.get('amount', 1))

    url = f'https://api.currencyfreaks.com/v2.0/rates/latest?apikey={api_key}&base={from_currency}&symbols={to_currency}'

    response = requests.get(url)

    if response.status_code == 200:

        data = response.json()

        if to_currency in data.get('rates', {}):

            rate = float(data['rates'][to_currency])

            converted_amount = round(rate * amount, 2)

            return JsonResponse({'from': from_currency, 'to': to_currency, 'rate': rate, 'converted_amount': converted_amount})

    return JsonResponse({'error': 'Failed to fetch conversion rate'}, status=500)

4. Frontend (Single File)

Step 4.1: Create the HTML File

Place the HTML, CSS, and JavaScript code in a single file named index.html within the exchange/templates/exchange/ directory.

File: exchange/templates/exchange/index.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Currency Exchange Rate Widget</title>

    <style>

        /* Embedded CSS */

        body {

            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;

            display: flex;

            justify-content: center;

            align-items: center;

            height: 100vh;

            margin: 0;

            background: linear-gradient(135deg, green, black);

            color: #333;

        }

        #currency-widget {

            width: 360px;

            padding: 30px;

            border-radius: 15px;

            background: #ffffff;

            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);

            text-align: center;

        }

        h2 {

            font-size: 2em;

            color: #1f2937;

            margin-bottom: 30px;

            position: relative;

        }

        h2::after {

            content: '';

            width: 50px;

            height: 3px;

            background: #6dd5ed;

            display: block;

            margin: 0 auto;

            margin-top: 10px;

        }

        label {

            font-size: 1.1em;

            color: #4b5563;

            margin-bottom: 10px;

            display: block;

        }

        select, input {

            width: 100%;

            padding: 12px;

            margin-bottom: 25px;

            border: 1px solid #d1d5db;

            border-radius: 8px;

            font-size: 1em;

            background-color: #f1f5f9;

            box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);

            transition: box-shadow 0.3s ease;

        }

        select:focus, input:focus {

            box-shadow: 0 6px 15px rgba(0, 0, 0, 0.15);

            outline: none;

        }

        #result {

            font-size: 1.5em;

            font-weight: bold;

            color: #1f2937;

            margin-top: 20px;

        }

        #currency-widget button {

            width: 100%;

            padding: 12px;

            background-color: #2193b0;

            border: none;

            border-radius: 8px;

            color: white;

            font-size: 1.2em;

            cursor: pointer;

            transition: background-color 0.3s ease;

        }

        #currency-widget button:hover {

            background-color: #6dd5ed;

        }

    </style>

</head>

<body>

<div id="currency-widget">

    <h2>Currency Exchange Rate</h2>

    <label for="fromCurrency">From:</label>

    <select id="fromCurrency"></select>

    <label for="toCurrency">To:</label>

    <select id="toCurrency"></select>

    <label for="amount">Amount:</label>

    <input type="number" id="amount" value="1">

    <div id="result"></div>

    <button id="convertButton">Convert</button>

</div>

<script>

    // Embedded JavaScript

    document.addEventListener('DOMContentLoaded', function () {

        const API_KEY = 'knhiqv4tn96gqm28y299jtd67s55dwk2'; // Replace with your API key

        const fromCurrency = document.getElementById('fromCurrency');

        const toCurrency = document.getElementById('toCurrency');

        const amount = document.getElementById('amount');

        const result = document.getElementById('result');

        const convertButton = document.getElementById('convertButton');

        // Fetch supported currencies from the API

        fetch('/api/supported-currencies/')

            .then(response => response.json())

            .then(data => {

                const currenciesMap = data.supportedCurrenciesMap;

                for (const [currencyCode, currencyInfo] of Object.entries(currenciesMap)) {

                    let option1 = document.createElement('option');

                    option1.value = currencyCode;

                    option1.textContent = `${currencyCode} - ${currencyInfo.currencyName}`;

                    fromCurrency.appendChild(option1);

                    let option2 = document.createElement('option');

                    option2.value = currencyCode;

                    option2.textContent = `${currencyCode} - ${currencyInfo.currencyName}`;

                    toCurrency.appendChild(option2);

                }

                fromCurrency.value = 'USD';

                toCurrency.value = 'EUR';

            });

        // Handle conversion

        convertButton.addEventListener('click', () => {

            const from = fromCurrency.value;

            const to = toCurrency.value;

            const amt = amount.value;

            fetch(`/api/convert/?from=${from}&to=${to}&amount=${amt}`)

                .then(response => response.json())

                .then(data => {

                    if (data.converted_amount) {

                        result.textContent = `${amt} ${from} = ${data.converted_amount} ${to}`;

                    } else {

                        result.textContent = 'Error fetching conversion rate.';

                    }

                });

        });

    });

</script>

</body>

</html>

5. Run the Project

Start the Django development server:

python manage.py runserver

Visit http://127.0.0.1:8000/ in your browser.

Conclusion

Integrating a currency API with Django is simple and efficient. Django's structured architecture makes connecting to APIs like CurrencyFreaks seamless. It enables real-time access to currency data for various applications, including e-commerce stores and commercial use.

The framework supports features like setting a base currency and retrieving data for a specific date, making it highly versatile. Django's scalability supports projects of any size, whether for small businesses or large-scale commercial use.

Its combination of a robust backend with a user-friendly frontend highlights Django's flexibility. Developers can take advantage of premium features for enhanced functionality. A dedicated support team is available to assist with integration challenges.

Django's built-in security features ensure safe data handling, even for applications requiring real-time updates during a quarterly briefing call. Its strong community and extensive documentation make it a reliable choice for developers. Quarterly briefing updates and scalable functionality further enhance its appeal.

FAQs

What is the best API for exchange rates?

CurrencyFreaks API offers accurate and real-time exchange rate data.

Is there a free exchange rate API?

Yes, CurrencyFreaks and ExchangeRate-API provide free plans for basic usage.

Is Google currency API free?

No, Google's currency API is not free; it requires payment.

What is the API exchange rate?

An exchange rate API fetches real-time currency conversion rates programmatically.

Sign Up for free at CurrencyFreaks and get your business's most accurate exchange rates.