偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用Flask框架構(gòu)建URL縮短器Web應(yīng)用程序

譯文
開(kāi)發(fā) 架構(gòu)
使用Flask和Python構(gòu)建URL縮短器是學(xué)習(xí)如何使用Flask構(gòu)建Web應(yīng)用程序的好方法??梢允褂迷谶@一教程中學(xué)習(xí)的技能制作更復(fù)雜和高級(jí)的應(yīng)用程序。

譯者 | 李睿

審校 | 重樓

51CTO讀者成長(zhǎng)計(jì)劃社群招募,咨詢小助手(微信號(hào):CTOjishuzhan)

隨著技術(shù)的快速發(fā)展,URL的生成可以通過(guò)URL生成器的API來(lái)創(chuàng)建每個(gè)URL的唯一形式。人們發(fā)現(xiàn),與朋友分享長(zhǎng)而全面的鏈接或?qū)⑵渥鳛樽约汗ぷ鞯膮⒖己芫哂刑魬?zhàn)性。URL縮短器可以將每個(gè)長(zhǎng)URL的長(zhǎng)度縮短為可以理解或掌握的較短URL。本文將學(xué)習(xí)如何使用Flask框架和Python在其機(jī)器上免費(fèi)構(gòu)建和運(yùn)行URL縮短器。

一、什么是URL縮短器?  

URL縮短器是一種工具,它可以獲取一個(gè)長(zhǎng)而復(fù)雜的URL,并生成一個(gè)更短、更易于調(diào)用的版本。當(dāng)單擊時(shí),縮短的URL通常會(huì)重定向到原始的較長(zhǎng)的URL。URL縮短器通常用于社交媒體帖子、電子郵件消息和其他情況,在這些情況下,短URL更方便、更容易共享。

前提

為了繼續(xù)學(xué)習(xí)這一教程,應(yīng)該考慮以下幾點(diǎn):

  • 基本了解Python編程、HTML和CSS
  • Python 3.6或更高版本
  • Flask框架
  • 數(shù)據(jù)庫(kù)系統(tǒng),如SQLite或PostgreSQL

1.安裝Flask

要安裝Flask,需要使用Python的pip包管理器。打開(kāi)命令提示符或終端,輸入下面的命令。

pip install flask

創(chuàng)建并運(yùn)行Flask應(yīng)用程序。

要?jiǎng)?chuàng)建Flask應(yīng)用程序,需要?jiǎng)?chuàng)建一個(gè)Python文件app.py,并從Flask模塊導(dǎo)入Flask類(lèi),如下所示:

Python

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

要運(yùn)行應(yīng)用程序或啟動(dòng)服務(wù)器,請(qǐng)?jiān)诿钐崾痉蚪K端中運(yùn)行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.選擇數(shù)據(jù)庫(kù)系統(tǒng)  

Flask支持多種數(shù)據(jù)庫(kù)系統(tǒng),包括SQLite、MySQL、PostgreSQL等等。在這一教程中將使用SQLite,因?yàn)樗禽p量級(jí)的,不需要單獨(dú)的服務(wù)器進(jìn)行安裝。

3.創(chuàng)建數(shù)據(jù)庫(kù)模式  

要開(kāi)始創(chuàng)建數(shù)據(jù)庫(kù)模式,需要定義要使用的表和列并存儲(chǔ)數(shù)據(jù)。這一教程將創(chuàng)建一個(gè)名為URL的表,其中包含以下列、Id、original_url和short_url。將使用像SQLAlchemy這樣的對(duì)象關(guān)系映射工具。

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到數(shù)據(jù)庫(kù)

要配置和連接Flask數(shù)據(jù)庫(kù),必須在Flask應(yīng)用程序中配置URL并初始化數(shù)據(jù)庫(kù)對(duì)象,如下所示:

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

用戶可以使用哈希函數(shù)生成短URL,將原始URL轉(zhuǎn)換為唯一的短字符串。用于URL縮短器的一個(gè)聯(lián)合哈希函數(shù)是MD5,但也可以使用其他哈希函數(shù),例如SHA-256或Base64編碼。MD5以原始URL作為輸入,對(duì)其進(jìn)行哈希運(yùn)算,并將前7個(gè)字符作為短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.在數(shù)據(jù)庫(kù)中存儲(chǔ)短URL

在創(chuàng)建短URL之后,需要將它們存儲(chǔ)在已開(kāi)發(fā)的數(shù)據(jù)庫(kù)方案中。數(shù)據(jù)庫(kù)將同時(shí)存儲(chǔ)短URL和原始URL。你可以使用INSERT INTO SQL命令將新記錄插入數(shù)據(jù)庫(kù)。

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,需要定義一個(gè)Flask路由,該路由將短URL作為參數(shù)處理,并使用數(shù)據(jù)庫(kù)中的SQL SELECT語(yǔ)句查找原始URL。

如果找到原始URL,代碼將使用Flask的重定向函數(shù)將用戶重定向到原始URL。如果沒(méi)有找到短URL,代碼將使用Flask的中止函數(shù)引發(fā)404錯(cuò)誤。

Python

1 @app.route('/<short_url>')
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.處理錯(cuò)誤  

要處理錯(cuò)誤,可以為常見(jiàn)的HTTP錯(cuò)誤(如404 Not Found或500 Internal Server error)定義自定義錯(cuò)誤頁(yè)。page_not_found函數(shù)使用Flask的render_template函數(shù)渲染自定義404錯(cuò)誤頁(yè)面,并返回404 HTTP狀態(tài)代碼。internal_server_error函數(shù)也執(zhí)行同樣的操作。

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.創(chuàng)建HTML模板

創(chuàng)建一個(gè)模板,該模板定義一個(gè)簡(jiǎn)單的HTML表單,供用戶輸入要縮短的URL,并顯示一個(gè)縮短的URL列表(如果存在的話)。{{}}語(yǔ)法用于插入來(lái)自Flask應(yīng)用程序的變量,{%%}語(yǔ)法用于控制結(jié)構(gòu),如循環(huán)和條件。將模板保存為index.html。

HTML

1 <!DOCTYPE html>
2
3 <html>
4
5  <head>
6
7  <title>URL Shortener</title>
8
9 </head>
10
11  <body>
12
13 <h1>URL Shortener</h1>
14
15  <form actinotallow="{{ url_for('shorten_url') }}" method="POST">
16
17   <label for="url">Enter your URL:</label>
18
19   <input type="url" id="url" name="url" required>
20
21  <button type="submit">Shorten</button>
22
23  </form>
24
25  {% if urls %}
26
27   <h2>Shortened URLs:</h2>
28
29   <ul>
30
31  {% for url in urls %}
32
33   <li><a href="{{ url.short_url }}">{{ url.short_url }}</a> - {{ url.original_url }}</li>
34
35   {% endfor %}
36
37   </ul>
38
39   {% endif %}
40
41  </body>
42
43 </html>

10.為Web界面創(chuàng)建Flask路由  

將為呈現(xiàn)index.html模板的主頁(yè)定義一個(gè)路由,并將最近創(chuàng)建的十個(gè)URL的列表作為URL變量傳遞給模板。它還為呈現(xiàn)404.html模板的404錯(cuò)誤定義了一個(gè)錯(cuò)誤處理程序。

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.實(shí)現(xiàn)URL縮短表單  

要實(shí)現(xiàn)URL縮短表單,需要定義一個(gè)Flask路由來(lái)處理表單提交,并為輸入的URL生成一個(gè)短URL。下面是一個(gè)如何做到這一點(diǎn)的例子:

這段代碼為/shortenURL定義了一個(gè)路由,用于處理來(lái)自URL縮短表單的POST請(qǐng)求。它使用請(qǐng)求從表單提交中檢索原始URL。form['url']使用前面的generate_short_url函數(shù)生成一個(gè)短URL,并使用SQLAlchemy將兩個(gè)URL存儲(chǔ)在數(shù)據(jù)庫(kù)中。最后,它將用戶重定向到主頁(yè),并將新URL添加到列表中。

12.顯示縮短的URL列表

下面的代碼使用SQLAlchemy查詢從數(shù)據(jù)庫(kù)中檢索最近創(chuàng)建的十個(gè)URL,并將它們作為URL變量傳遞給index.html模板。該模板使用URL變量來(lái)顯示縮短的URL列表。

有了這些變化,現(xiàn)在應(yīng)該有了一個(gè)功能齊全的URL縮短器,它可以使用Flask和Python構(gòu)建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)

二、部署應(yīng)用程序

選擇托管平臺(tái)

要部署Flask應(yīng)用程序,必須選擇支持Python應(yīng)用程序的托管平臺(tái)。有許多可用的托管選項(xiàng),但一些流行的Flask應(yīng)用程序的選擇包括:

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

每個(gè)平臺(tái)都有優(yōu)點(diǎn)和缺點(diǎn),所以研究并選擇最適合用戶需求的平臺(tái)是至關(guān)重要的。

三、結(jié)語(yǔ)

使用Flask和Python構(gòu)建URL縮短器是學(xué)習(xí)如何使用Flask構(gòu)建Web應(yīng)用程序的好方法??梢允褂迷谶@一教程中學(xué)習(xí)的技能制作更復(fù)雜和高級(jí)的應(yīng)用程序。Flask是一個(gè)強(qiáng)大而靈活的框架,可以讓用戶快速輕松地構(gòu)建應(yīng)用程序,它是構(gòu)建任何規(guī)模和復(fù)雜性的Web應(yīng)用程序的絕佳選擇。

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

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2023-06-29 07:45:03

2023-06-13 13:38:00

FlaskPython

2010-06-13 09:22:37

jQuery

2023-09-21 08:00:00

ChatGPT編程工具

2009-09-22 12:59:07

ibmdwWeb

2024-01-02 00:18:56

Buffalo項(xiàng)目Go Web框架

2009-01-03 14:25:10

ibmdwWeb

2014-02-19 15:38:42

2023-09-05 23:29:49

前端Vue

2011-01-24 07:24:48

Visual Stud

2012-04-19 09:34:21

ibmdw

2023-01-09 17:04:24

2018-12-03 08:25:24

2019-02-11 09:35:04

Python應(yīng)用程序Tornado

2020-03-20 19:37:03

JavascriptWeb前端

2014-03-27 10:28:31

移動(dòng)Web開(kāi)發(fā)框架

2012-03-21 09:36:33

ibmdw

2012-05-14 17:35:28

移動(dòng)Web

2017-12-10 14:13:14

云服務(wù)云原生應(yīng)用程序

2017-03-02 11:10:39

AndroidMVVM應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)