用Python Flask创建简洁高效的URL短链接服务
作者:csdn1561168266 发布时间:2022-10-12 16:21:49
大家好,使用 Python Flask 创建 URL 缩短器是一个有趣而简单的项目,可以帮助您深入了解 Web 开发的世界。Flask 是 Python 的轻量级 Web 框架,可让您快速轻松地构建 Web 应用程序。在本文中,我们将介绍使用 Flask 构建基本 URL 缩短器的过程。
一、设置 Flask 应用程序
首先,为您的项目创建一个新目录并在该目录中打开一个终端。然后,运行以下命令为您的项目创建一个新的虚拟环境:
# For windows:
virtualenv venv
# For linux:
python3 -m venv venv
通过运行以下命令激活虚拟环境:
# For windows
venv/Scripts/activate
# For linux
source venv/bin/activate
接下来,通过运行以下命令安装 Flask:
pip install Flask
在您的项目目录中创建一个名为的新文件app.py
并添加以下代码以设置基本的 Flask 应用程序:
from flask import Flask, request, redirect
app = Flask(__name__)
@app.route('/')
def index():
return 'Welcome to the URL Shortener'
if __name__ == '__main__':
app.run(debug=True)
运行以下命令启动 Flask 开发服务器:
python app.py
在您的网络浏览器中访问http://localhost:5000
以查看“欢迎使用 URL 缩短器”消息。
二、将 URL 存储在字典中
接下来,我们会将原始 URL 及其相应的缩短 URL 存储在 Python 字典中。将以下代码添加到您的app.py
文件中:
url_map = {}
@app.route('/shorten', methods=['POST'])
def shorten_url():
original_url = request.form['url']
short_url = generate_short_url(original_url)
url_map[short_url] = original_url
return short_url
def generate_short_url(original_url):
# Generate a unique short URL for the original URL
# (We'll implement this in the next step)
pass
三、生成唯一的短 URL
要生成唯一的短 URL,我们将使用哈希函数。哈希函数接受输入(在本例中为原始 URL)并返回固定长度的输出(短 URL)。我们将使用 SHA-1 哈希函数,它是 Pythonhashlib库的一部分。将以下代码添加到您的app.py文件中:
import hashlib
def generate_short_url(original_url):
hash = hashlib.sha1(original_url.encode())
short_url = hash.hexdigest()[:8]
return short_url
四、重定向到原始 URL
最后,我们将添加一个路由,以便在用户访问缩短的 URL 时将用户重定向到原始 URL。将以下代码添加到您的app.py
文件中:
@app.route('/<short_url>')
def redirect_url(short_url):
original_url = url_map.get(short_url)
if original_url:
return redirect(original_url
来源:https://blog.csdn.net/csdn1561168266/article/details/130279146


猜你喜欢
- 地图这期文章我们一起来看看地图是如何绘制的,如何在地图里面添加数据进行多维度的展示,下面我们一起来感受一下地图的魅力吧!&ldquo
- python获取当前运行函数名称的方法实例代码摘要: c/c++中获取函数所在源码名,函数名和行号的方法很简单 __FILE__,__FUN
- Go 语言的 sync 包提供了一系列同步原语,其中 sync.Cond 就是其中之一。sync.Cond 的作用是在多个 goroutin
- 首先,啰嗦几句废话如下: (1)触发器(trigger)是个特殊的存储过程,它的执行并不需要我们去显式调用,而是由一些事件触发,这有点类似C
- 目录列表拼接三种方式方式一:简简单单的“+”方法二:切片赋值方式三:列表自带的extend()列表去重的三种方式利用集合set的特性利用字典
- def Num2MoneyFormat( change_number ): ""&q
- 本文结合其他博主的一些介绍总结了dot函数运算过程基本简介dot函数为numpy库下的一个函数,主要用于矩阵的乘法运算,其中包括:向量内积、
- 1 为什么找不见外星人为什么我们见不到外星人? 曾经在物理学上有一个著名人物叫费米,大家知道费米是在物理学上发现中子轰击的人,有一个著名的费
- 最初打算使用scroll-view实现,效果好、流畅、有惯性滑动,但由于滚动条没法去掉、无法实现上下层的帧布局,最终放弃了。还是自己写个吧,
- 简而言之,channel维护了一个带指针的接受和发送的队列,其中包含mutex锁保证并发安全,数据类型,元素个数,元素大小,channel状
- 从今年3月份开始mysql官网开始发布相关的5.6系列的各个版本,对于mysql5.6系列的版本对一起的版本进行了全局性的细节性加强;个人感
- 随着对Dreamweaver cs3中集成Spry功能的深入学习,了解并掌握到Spry框架的一些功能模块,其中就有通过Dreamweaver
- 去年5月至10月间,我和雅虎口碑网的前端主管:鄢学鹍(秦歌),一起翻译了这本《JavaScript语言精粹》。原书作者是JavaScript
- 关于with cube ,with rollup 和 grouping通过查看sql 2005的帮助文档找到了CUBE 和 ROLLUP 之
- 主备同步,也叫主从复制,是MySQL提供的一种高可用的解决方案,保证主备数据一致性的解决方案。在生产环境中,会有很多不可控因素,例如数据库服
- <html> <head> <title>获取ACCESS数据库表名 -&
- stdClass类是PHP的一个内部保留类,初始时没有成员变量也没成员方法,所有的魔术方法都被设置为NULL,可以使用其传递变量参数,但是没
- PHP htmlentities() 函数实例把一些字符转换为 HTML 实体:<?php $str = "<&
- MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单。通过
- body {font-family: Arial, sans-serif; }这是我迄今