📅  最后修改于: 2023-12-03 14:52:30.353000             🧑  作者: Mango
在 web 应用程序中,常常需要将较长的 URL 地址转化为短地址。本文将介绍如何使用 Python 制作一个 URL 缩短器。
URL 缩短器背后的主要原理是将原始 URL 转化为一个较短的字符串。转化方法有很多,但最常用的是使用散列函数。散列函数可以将任意长度的数据映射为固定长度的输出,通常为一个 32 位无符号整数。我们可以将这个整数转换为短字符串,用于代替原始 URL。
我们将使用 Flask 和 Redis 制作一个简单的 URL 缩短器。
首先,我们需要安装 Flask 和 Redis:
pip install Flask redis
然后,我们可以编写 Flask 应用程序:
from hashlib import sha256
from redis import Redis
from flask import Flask, request, redirect, render_template
app = Flask(__name__)
redis = Redis()
@app.route('/')
def index():
return render_template('index.html')
@app.route('/', methods=['POST'])
def shorten_url():
url = request.form.get('url')
if url:
url_hash = sha256(url.encode('utf-8')).hexdigest()[:8]
redis.set(url_hash, url)
return render_template('index.html', short_url=request.url_root + url_hash)
return redirect('/')
在这个应用程序中,我们有两个路由:/
和 /shorten_url
。
路由 /
渲染一个 HTML 模板,用于接受用户输入的原始 URL 地址:
<!DOCTYPE html>
<html>
<head>
<title>URL Shortener</title>
</head>
<body>
{% if short_url %}
<p>Your shortened URL:</p>
<a href="{{ short_url }}">{{ short_url }}</a>
{% endif %}
<form method="POST">
<input type="text" name="url" placeholder="Enter URL...">
<button type="submit">Shorten</button>
</form>
</body>
</html>
路由 /shorten_url
接受用户提交的原始 URL 地址,并将其散列为一个 8 个字符长的字符串。然后,将散列值和原始 URL 存储到 Redis 中,并返回一个短地址。
运行这个应用程序:
export FLASK_APP=app.py
flask run
现在,你可以在浏览器中打开 http://localhost:5000
,输入任意 URL 地址,点击“Shorten”按钮,即可得到一个短地址。
本文介绍了如何使用 Python 制作一个简单的 URL 缩短器,使用了 Flask 和 Redis。虽然这个应用程序非常简单,但说明了 URL 缩短器的工作原理,并提供了一个起始点,供读者进一步探索。