我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用Flask框架构建URL缩短器Web应用程序

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用Flask框架构建URL缩短器Web应用程序

审校 | 重楼

51CTO读者成长计划社群招募,咨询小助手(微信号:CTOjishuzhan)

随着技术的快速发展,URL的生成可以通过URL生成器的API来创建每个URL的唯一形式。人们发现,与朋友分享长而全面的链接或将其作为自己工作的参考很具有挑战性。URL缩短器可以将每个长URL的长度缩短为可以理解或掌握的较短URL。本文将学习如何使用Flask框架和Python在其机器上免费构建和运行URL缩短器。

一、什么是URL缩短器?  

URL缩短器是一种工具,它可以获取一个长而复杂的URL,并生成一个更短、更易于调用的版本。当单击时,缩短的URL通常会重定向到原始的较长的URL。URL缩短器通常用于社交媒体帖子、电子邮件消息和其他情况,在这些情况下,短URL更方便、更容易共享。

前提

为了继续学习这一教程,应该考虑以下几点:

  • 基本了解Python编程、HTML和CSS
  • Python 3.6或更高版本
  • Flask框架
  • 数据库系统,如SQLite或PostgreSQL

1.安装Flask

要安装Flask,需要使用Python的pip包管理器。打开命令提示符或终端,输入下面的命令。

pip install flask

创建并运行Flask应用程序。

要创建Flask应用程序,需要创建一个Python文件app.py,并从Flask模块导入Flask类,如下所示:

Python

1 from flask import Flask
2 app = Flask(__name__)
3
4 if __name__ == '__main__':
5
6 app.run(debug=True)

要运行应用程序或启动服务器,请在命令提示符或终端中运行Python文件:

Python

1 python app.py
2 Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
3 Restarting with stat
4 Debugger is active!
5 Debugger PIN: 123-456-789

2.选择数据库系统  

Flask支持多种数据库系统,包括SQLite、MySQL、PostgreSQL等等。在这一教程中将使用SQLite,因为它是轻量级的,不需要单独的服务器进行安装。

3.创建数据库模式  

要开始创建数据库模式,需要定义要使用的表和列并存储数据。这一教程将创建一个名为URL的表,其中包含以下列、Id、original_url和short_url。将使用像SQLAlchemy这样的对象关系映射工具。

SQL

1 CREATE TABLE urls (
2
3  id INTEGER PRIMARY KEY AUTOINCREMENT,
4
5  original_url TEXT NOT NULL,
6
7  short_url TEXT NOT NULL
8
9 );

4.连接Flask到数据库

要配置和连接Flask数据库,必须在Flask应用程序中配置URL并初始化数据库对象,如下所示:

Python

1 from flask import Flask
2
3 import sqlite3
4
5
6
7 app = Flask(__name__)
8
9 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///urls.db'
10
11 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False #disable tracking modifications not needed in the tutorial
12
13 db = sqlite3.connect('urls.db')

5.生成短URL

用户可以使用哈希函数生成短URL,将原始URL转换为唯一的短字符串。用于URL缩短器的一个联合哈希函数是MD5,但也可以使用其他哈希函数,例如SHA-256或Base64编码。MD5以原始URL作为输入,对其进行哈希运算,并将前7个字符作为短URL。

Python

1 import hashlib
2
3
4
5 def generate_short_url(original_url):
6
7   # Hash the original URL using MD5
8
9  hash_object = hashlib.md5(original_url.encode())
10
11  hash_hex = hash_object.hexdigest()
12
13
14
15  # Take the first 7 characters of the hash as the short URL
16
17  short_url = hash_hex[:7]
18
19
20
21  return short_url

6.在数据库中存储短URL

在创建短URL之后,需要将它们存储在已开发的数据库方案中。数据库将同时存储短URL和原始URL。你可以使用INSERT INTO SQL命令将新记录插入数据库。

Python

1 def insert_url(original_url, short_url):
2
3  # Insert a new record into the urls table
4
5  cursor = db.cursor()
6
7  cursor.execute(
8
9   'INSERT INTO urls (original_url, short_url) VALUES (?, ?)',
10
11  (original_url, short_url)
12
13   )
14
15   db.commit()
16
17 cursor.close()

7.将短URL重定向到其原始URL

为了将短URL重定向到其原始URL,需要定义一个Flask路由,该路由将短URL作为参数处理,并使用数据库中的SQL SELECT语句查找原始URL。

如果找到原始URL,代码将使用Flask的重定向函数将用户重定向到原始URL。如果没有找到短URL,代码将使用Flask的中止函数引发404错误。

Python

1 @app.route('/')
2
3 def redirect_url(short_url):
4
5  # Look up the original URL in the database
6
7 cursor = db.cursor()
8
9 cursor.execute(
10
11  'SELECT original_url FROM urls WHERE short_url = ?',
12
13   (short_url,)
14
15  )
16
17   result = cursor.fetchone()
18
19   cursor.close()
20
21
22
23  if result:
24
25     # Redirect to the original URL
26
27   return redirect(result[0])
28
29  else:
30
31   # Handle error if the short URL is not found
32
33 abort(404)

8.处理错误  

要处理错误,可以为常见的HTTP错误(如404 Not Found或500 Internal Server error)定义自定义错误页。page_not_found函数使用Flask的render_template函数渲染自定义404错误页面,并返回404 HTTP状态代码。internal_server_error函数也执行同样的操作。

Python

1 @app.errorhandler(404)
2
3  def page_not_found(error):
4
5   # Render a custom 404 error page
6
7   return render_template('404.html'), 404
8
9
10
11 @app.errorhandler(500)
12
13 def internal_server_error(error):
14
15  # Render a custom 500 error page
16
17   return render_template('500.html'), 500

9.创建HTML模板

创建一个模板,该模板定义一个简单的HTML表单,供用户输入要缩短的URL,并显示一个缩短的URL列表(如果存在的话)。{{}}语法用于插入来自Flask应用程序的变量,{%%}语法用于控制结构,如循环和条件。将模板保存为index.html。

HTML

1 
2
3 
4
5  
6
7  URL Shortener
8
9 
10
11  
12
13 
14
15  
16 17 18 19 20 21 22 23
24 25 {% if urls %} 26 27

Shortened URLs:

28 29 38 39 {% endif %} 40 41 42 43

10.为Web界面创建Flask路由  

将为呈现index.html模板的主页定义一个路由,并将最近创建的十个URL的列表作为URL变量传递给模板。它还为呈现404.html模板的404错误定义了一个错误处理程序。

Python

1 @app.route('/')
2
3 def index():
4
5  # Render the homepage template
6
7  urls = Url.query.order_by(Url.created.desc()).limit(10).all()
8
9   return render_template('index.html', urls=urls)
10
11
12
13  @app.errorhandler(404)
14
15 def page_not_found(error):
16
17  # Render the 404 error template
18
19  return render_template('404.html'), 404

11.实现URL缩短表单  

要实现URL缩短表单,需要定义一个Flask路由来处理表单提交,并为输入的URL生成一个短URL。下面是一个如何做到这一点的例子:

这段代码为/shortenURL定义了一个路由,用于处理来自URL缩短表单的POST请求。它使用请求从表单提交中检索原始URL。form['url']使用前面的generate_short_url函数生成一个短URL,并使用SQLAlchemy将两个URL存储在数据库中。最后,它将用户重定向到主页,并将新URL添加到列表中。

12.显示缩短的URL列表

下面的代码使用SQLAlchemy查询从数据库中检索最近创建的十个URL,并将它们作为URL变量传递给index.html模板。该模板使用URL变量来显示缩短的URL列表。

有了这些变化,现在应该有了一个功能齐全的URL缩短器,它可以使用Flask和Python构建Web界面!

Python

1 @app.route('/')
2
3 def index():
4
5 # Retrieve the 10 most recently created URLs from the database
6
7  urls = Url.query.order_by(Url.created.desc()).limit(10).all()
8
9
10
11  # Render the homepage template with the list of URLs
12
13 return render_template('index.html', urls=urls)

二、部署应用程序

选择托管平台

要部署Flask应用程序,必须选择支持Python应用程序的托管平台。有许多可用的托管选项,但一些流行的Flask应用程序的选择包括:

  • Heroku
  • Google App Engine
  • AWS Elastic Beanstalk
  • DigitalOcean
  • PythonAnywhere

每个平台都有优点和缺点,所以研究并选择最适合用户需求的平台是至关重要的。

三、结语

使用Flask和Python构建URL缩短器是学习如何使用Flask构建Web应用程序的好方法。可以使用在这一教程中学习的技能制作更复杂和高级的应用程序。Flask是一个强大而灵活的框架,可以让用户快速轻松地构建应用程序,它是构建任何规模和复杂性的Web应用程序的绝佳选择。

原文链接:https://dzone.com/articles/how-to-build-a-url-shortener-web-app-with-flask-fr

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用Flask框架构建URL缩短器Web应用程序

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用Flask框架构建URL缩短器Web应用程序

使用Flask和Python构建URL缩短器是学习如何使用Flask构建Web应用程序的好方法。可以使用在这一教程中学习的技能制作更复杂和高级的应用程序。
Flask框架Web2024-11-30

使用Python的Flask框架构建大型Web应用程序的结构示例

虽然小型web应用程序用单个脚本可以很方便,但这种方法却不能很好地扩展。随着应用变得复杂,在单个大的源文件中处理会变得问题重重。 与大多数其他web框架不同,Flask对大型项目没有特定的组织方式;应用程序的结构完全交给开发人员自己决定。在
2022-06-04

使用Python的Flask框架来搭建第一个Web应用程序

1、初始化 在这章,你将学到Flask应用程序的不同部分。同时,你将编写和运行你的第一个Flask web应用程序。 所有的Flask应用程序都必须创建一个 应用程序实例 。使用web服务器网关接口协议将所有从客户端接收的请求传递给这个对象
2022-06-04

使用 Flask 构建 Web 应用程序:完整实战教程

在这里,我们将介绍如何使用 Flask 构建一个完整的 Web 应用程序,包括使用 Flask-RESTful 构建 RESTful API、使用 Flask-SQLAlchemy 进行数据库操作、使用 Flask-wtf 进行表单验证和使

五个用于构建Web应用程序的Go Web框架

就这样!您已经安装了Buffalo框架,创建了一个简单的“Hello, World!” Buffalo项目,并以开发模式运行了该应用程序。Buffalo具有许多功能和项目结构,可以帮助您高效地构建Web应用程序。您现在可以通过定义路由、控制

Node.js Koa:构建现代Web应用程序的框架

Koa 是一款简洁、高效的 Node.js Web 框架,构建在 Express 的基础上,旨在提供更强大、更灵活的 Web 开发体验。本文将介绍 Koa 的基本概念及其使用方式,帮助您轻松构建现代 Web 应用程序。
Node.js Koa:构建现代Web应用程序的框架
2024-02-08

如何使用ChatGPT构建一个Web应用程序?

围绕ChatGPT的最大卖点之一是它可以成为一种有效的编程工具。其想法是这样的:您用自然语言描述需求,该聊天机器人生成满足该需求的代码。但是ChatGPT在这方面到底有多好呢?

如何使用C++构建单页Web应用程序?

使用c++++构建spa涉及:1. 安装emscripten并配置编译器;2. 运行构建脚本编译代码;3. 创建包含wasm模块的html界面;4. 部署spa到web服务器。使用C++构建单页Web应用程序单页Web应用程序 (SPA)
如何使用C++构建单页Web应用程序?
2024-05-13

如何使用C++构建云原生的Web应用程序?

使用 c++++ 构建云原生 web 应用程序涉及以下步骤:创建一个新项目,添加必要的库。编写业务逻辑并创建 http 路由。使用 dockerfile 创建容器镜像。将镜像构建并推送到注册表。在 kubernetes 上部署应用程序。如何
如何使用C++构建云原生的Web应用程序?
2024-05-12

使用Docker Compose、Nginx和MariaDB构建可伸缩的PHP应用程序架构

引言:随着云计算和虚拟化技术的发展,使用容器来构建和管理应用程序成为了当今主流的解决方案之一。在传统的应用程序部署中,配置和管理应用程序环境通常是非常繁琐且容易出错的。而使用容器化技术可以将应用程序与其依赖的环境一同打包,从而简化了应用程序
2023-10-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录