A URL shortener tool allows users to take a long URL and convert it into a shorter, more manageable link. We can build a simple version of this tool using Python and Flask, a lightweight web framework.
Prerequisites
Before starting, ensure you have the following:
- Python installed on your system (Python 3.6+ is recommended).
- Flask installed. You can install Flask using pip.
Step 1: Setting Up Your Environment
First, you need to create a virtual environment and install Flask. Open your terminal and run the following commands:
# Create a virtual environment
python -m venv myenv
# Activate the virtual environment
# On Windows
myenv\Scripts\activate
# On macOS/Linux
source myenv/bin/activate
# Install Flask
pip install Flask
Step 2: Writing the Code
Create a directory for your project, e.g., url_shortener
, and inside it, create a Python file called app.py
. We'll break down the code into sections.
Importing Required Libraries
from flask import Flask, request, redirect, url_for
import string
import random
Setting Up Flask App and Database
We'll use a simple in-memory dictionary to store the URL mappings. For a more robust solution, you might use a database like SQLite or PostgreSQL.
app = Flask(__name__)
url_mapping = {}
Function to Generate Short URLs
We'll create a function that generates a short URL key.
def generate_short_url():
characters = string.ascii_letters + string.digits
short_url = ''.join(random.choice(characters) for _ in range(6))
return short_url
Route to Handle URL Shortening
This route will take a long URL from the user and return a shortened version.
@app.route('/shorten', methods=['POST'])
def shorten_url():
original_url = request.form['url']
short_url = generate_short_url()
url_mapping[short_url] = original_url
return f'Shortened URL: {request.host_url}{short_url}'
Route to Redirect Short URLs
This route will redirect users from the short URL to the original long URL.
@app.route('/<short_url>')
def redirect_url(short_url):
original_url = url_mapping.get(short_url)
if original_url:
return redirect(original_url)
else:
return 'URL not found', 404
Main Function to Run the App
if __name__ == "__main__":
app.run(debug=True)
Step 3: Running the Tool
Save your app.py
file and run it from the terminal:
python app.py
The Flask development server will start, and you can access the URL shortener tool by navigating to http://127.0.0.1:5000
in your web browser.
Step 4: Testing the Tool
To shorten a URL, you can use a tool like curl
or a simple HTML form. Here's a basic HTML form for testing:
<!DOCTYPE html>
<html>
<head>
<title>URL Shortener</title>
</head>
<body>
<form action="http://127.0.0.1:5000/shorten" method="post">
<label for="url">Enter URL to shorten:</label>
<input type="text" id="url" name="url">
<input type="submit" value="Shorten">
</form>
</body>
</html>
Save this HTML code as index.html
and open it in your web browser. Enter a URL to shorten and submit the form. You should see a shortened URL that you can use to test the redirection functionality.
Conclusion
By following these steps, you can create a simple URL shortener tool using Python and Flask.
This tool can be further enhanced with additional features such as user authentication, analytics, and a database for storing URL mappings persistently.
Alternatively you can also read how to create a simple URL Shortener tool using Python.
Want to learn more? Explore programming articles, tips and tricks on ZeroByteCode.
Top comments (2)
I will do something like this:
Nice, this is also cool and well-written.