Cum se filtrează rutele aplicației Flask pe baza modelelor URL?

Dec 24, 2025Lăsaţi un mesaj

Hei acolo! În calitate de furnizor de Filtering Flask, am văzut o mulțime de oameni care se luptă cu cum să filtreze rutele aplicației Flask pe baza modelelor URL. S-ar putea să sune puțin tehnic, dar nu vă faceți griji, sunt aici pentru a vă dezvălui într-un mod ușor.

În primul rând, să înțelegem de ce am dori să filtram rutele aplicației Flask. Într-o aplicație Flask din lumea reală, este posibil să aveți o grămadă de rute. Unele sunt pentru acces public, altele sunt pentru uz intern și unele pot fi pentru anumite roluri de utilizator. Filtrarea rutelor pe baza modelelor URL ajută la gestionarea accesului, la îmbunătățirea securității și la organizarea aplicației.

Să începem cu elementele de bază ale rutelor Flask. Într-o aplicație simplă Flask, definiți rute folosind@app.routedecorator. De exemplu:

din importul balonului Aplicația Flask = Flask(__name__) @app.route('/') def index(): return 'Aceasta este pagina de pornire' @app.route('/about') def about(): return 'Aceasta este pagina despre'

În această aplicație simplă, avem două rute: ruta rădăcină (/) și traseul despre (/despre). Dar dacă vrem să aplicăm un filtru, să zicem, pentru a permite accesul numai anumitor modele de adrese URL?

O modalitate de a face acest lucru este folosind Flask'sînainte_cereredecorator. Acest decorator vă permite să rulați o funcție înainte ca fiecare solicitare să fie procesată. Îl putem folosi pentru a verifica adresa URL solicitată cu un set de modele.

din flacon import Balon, cerere, abort app = Flask(__name__) ALLOWED_PATTERNS = [ '/', '/about' ] @app.before_request def restrict_access(): dacă request.path nu este în ALLOWED_PATTERNS: abort(403) @app.route('index/'): return 'This'index('): @app.route('/about') def about(): return 'Aceasta este pagina despre'

În acest cod,accesul_restricționatfuncția este rulată înainte de fiecare solicitare. Verifică dacă calea URL solicitată este înALLOWED_PATTERNSlistă. Dacă nu este, returnează o eroare 403 Forbidden. Aceasta este o formă foarte simplă de filtrare bazată pe potrivirile exacte ale adresei URL.

Laboratory Clear Glass Filtering Flasks With Upper TubulatureLaboratory Glass Conical Shape Erlenmeyer Filtering Flasks With Upper Tubulation

Dar dacă vrem să folosim modele mai flexibile, cum ar fi expresiile regulate? Ei bine, Flask nu are suport încorporat pentru filtrarea rutelor bazată pe regex, dar o putem implementa singuri.

Iată un exemplu de utilizare a expresiilor regulate pentru a filtra rutele:

import re din flask import Flask, request, abort app = Flask(__name__) ALLOWED_REGEX = [ re.compile(r'^/$'), re.compile(r'^/about$') ] @app.before_request def regex_restrict_access(): for pattern in ALLOWED_REGEX: else if. abort(403) @app.route('/') def index(): return 'Aceasta este pagina de start' @app.route('/about') def about(): return 'Aceasta este pagina despre'

În acest cod, am definit o listă de expresii regulate compilate. Theregex_restrict_accessfuncția parcurge aceste modele și verifică dacă vreunul dintre ele se potrivește cu calea URL solicitată. Dacă se găsește o potrivire, cererea este permisă; în caz contrar, este blocat cu o eroare 403.

Acum, să vorbim puțin despre aplicațiile practice ale filtrării rutelor. De exemplu, într-o aplicație de comerț electronic, este posibil să doriți să restricționați accesul la rutele administrative. Puteți defini un model pentru toate adresele URL legate de administrator, cum ar fi/admin/*și permiteți numai utilizatorilor admin autentificați să acceseze aceste rute.

Un alt caz de utilizare ar putea fi într-un API. Este posibil să doriți să limitați accesul la anumite puncte finale API în funcție de nivelul de autorizare al clientului. Prin filtrarea rutelor pe baza modelelor URL, puteți implementa cu ușurință acest tip de control al accesului.

În calitate de furnizor de balon filtrant, vreau să menționez și produsele noastre. Oferim o gamă largă de baloane filtrante de înaltă calitate, perfecte pentru utilizarea în laborator. Consultați-neBaloane filtrante din sticlă transparentă de laborator cu tubulatura superioarăşiBaloane filtrante Erlenmeyer de formă conică din sticlă de laborator cu tubulare superioară. Aceste baloane sunt fabricate din materiale de sticlă de vârf și sunt proiectate pentru operațiuni de filtrare eficiente și fiabile.

Să mergem puțin mai adânc în scenarii mai avansate de filtrare a rutei. De exemplu, este posibil să aveți o aplicație cu mai mulți locatari în care fiecare chiriaș are propriul său set de rute permise. Pentru a gestiona acest lucru, puteți stoca modelele permise într-o bază de date și o puteți interoga pe baza informațiilor despre chiriaș din cerere.

din flask import Flask, request, abort import sqlite3 app = Flask(__name__) def get_allowed_patterns(tenant_id): conn = sqlite3.connect('tenants.db') cursor = conn.cursor() cursor.execute("SELECT patterns FROM tenants,)) = tenants id. conn.close() dacă rezultat: returnează rezultatul[0].split(',') return [] @app.before_request def tenant_restrict_access(): tenant_id = request.headers.get('X - Tenant - ID') if tenant_id: allowed_patterns = get_allowed_patterns(tenant_patterns:not_id) if_abort. @app.route('/') def index(): return 'Aceasta este pagina de start' @app.route('/about') def about(): return 'Aceasta este pagina despre'

În acest exemplu, interogăm o bază de date SQLite pentru a obține modelele permise pentru un anumit chiriaș. ID-ul locatarului este preluat din anteturile cererii. Dacă adresa URL solicitată nu se află în lista de modele permise pentru acel locatar, accesul este refuzat.

Pe lângă securitate și controlul accesului, filtrarea rutelor poate fi folosită și pentru optimizarea performanței. De exemplu, puteți redirecționa solicitările care se potrivesc cu anumite modele către un alt server sau puteți stoca în cache răspunsurile pentru anumite modele URL.

Ei bine, aceasta este o concluzie despre cum să filtrați rutele aplicației Flask pe baza modelelor URL. Sper că această postare pe blog v-a oferit o bună înțelegere a subiectului. Dacă sunteți interesat de baloanele noastre de filtrare sau aveți întrebări despre filtrarea rutei în Flask, nu ezitați să contactați pentru o discuție privind achizițiile. Suntem aici pentru a te ajuta cu toate nevoile tale!

Referinte:

  • Documentația balonului
  • Documentația pentru expresiile regulate Python
  • Documentația SQLite