Un framework web este o bibliotecă de cod care face dezvoltarea web mai rapidă și mai ușoară, oferind modele comune pentru construirea de aplicații web fiabile, scalabile și ușor de întreținut. După începutul anilor 2000, proiectele profesionale de dezvoltare web folosesc întotdeauna un cadru web existent, cu excepția unor situații foarte neobișnuite.
De ce sunt utile cadrele web?
Cadrele web încapsulează ceea ce dezvoltatorii au învățat în ultimii douăzeci de ani în timp ce programau site-uri și aplicații pentru web. Cadrele facilitează reutilizarea codului pentru operațiile HTTP comune și structurarea proiectelor astfel încât alți dezvoltatori cu cunoștințe despre cadrul respectiv să poată construi și întreține rapid aplicația.
Funcționalități comune ale cadrelor web
Cadrele oferă funcționalitate în codul lor sau prin extensii pentru a efectua operații comune necesare pentru a rula aplicații web. Aceste operații comune includ:
- Rutarea URL
- Manipularea și validarea formularelor de intrare
- HTML, XML, JSON și alte formate de ieșire cu un motor de modelare
- Configurarea conexiunii la baza de date și manipularea persistentă a datelor prin intermediul unui mapator obiect-relațional (ORM)
- Securitatea web împotrivaCross-site request forgery (CSRF), SQL Injection,Cross-site Scripting (XSS) și alte atacuri malițioase obișnuite
- Semnalarea și recuperarea sesiunii
Nu toate cadrele web includ cod pentru toate funcționalitățile de mai sus.Cadrele se încadrează în spectrul de la executarea unui singur caz de utilizare până la furnizarea fiecărei caracteristici cunoscute a cadrului web pentru fiecare dezvoltator. Unele cadre adoptă abordarea „baterii incluse” în care tot ceea ce este posibil vine la pachet cu cadrul, în timp ce altele au un pachet de bază minim care se pretează la extensii furnizate de alte pachete.
De exemplu, cadrul de aplicații web Django include stratul Django ORM care permite unui dezvoltator să scrie operații de citire, scriere, interogare și ștergere a bazelor de date relaționale în cod Python, mai degrabă decât SQL.Cu toate acestea, ORM-ul Django nu poate funcționa fără modificări semnificative pe baze de date non-relaționale (NoSQL), cum ar fiMongoDB sau Cassandra.
Câteva alte cadre web, cum ar fi Flask și Pyramid, sunt mai ușor de utilizat cu baze de date non-relaționale prin încorporarea unor biblioteci Python externe.Există un spectru între funcționalitatea minimă cu extensibilitate ușoară la un capăt și includerea a tot în cadru cu o integrare strânsă la celălalt capăt.
Trebuie să folosesc un cadru web?
Dacă folosiți sau nu un cadru web în proiectul dvs. depinde de experiența dvs. în dezvoltarea web și de ceea ce încercați să realizați. Dacă sunteți un programator începător și doriți doar să lucrați la o aplicație web ca proiect de învățare, atunci un framework vă poate ajuta să înțelegeți conceptele enumerate mai sus, cum ar fi rutarea URL, manipularea datelor și autentificarea care sunt comune majorității aplicațiilor web.
Pe de altă parte, dacă sunteți un programator experimentat cu o experiență semnificativă în dezvoltarea web, s-ar putea să simțiți că framework-urile existente nu corespund cerințelor proiectului dumneavoastră. În acest caz, puteți amesteca și combina biblioteci open source, cum ar fi Werkzeug forWSGI plumbing cu propriul cod pentru a vă crea propriul cadru. Există încă mult loc în ecosistemul Python pentru noi cadre care să satisfacă nevoile dezvoltatorilor web care nu sunt satisfăcute de Django, Flask, Pyramid, Bottle și multe altele.
În concluzie, dacă trebuie sau nu să folosiți un cadru web pentru a construi o aplicație web depinde de experiența dumneavoastră și de ceea ce încercați să realizați.Folosirea unui framework web pentru a construi o aplicație web cu siguranță nu este necesară,dar va ușura viața majorității dezvoltatorilor în multe cazuri.
Compararea framework-urilor web
Talk Python to Me a avut un episod de podcast cu o comparație detaliată a framework-urilor Django, Flask, Tornado și Pyramid.
Sunteți curioși să aflați cum este structurat codul într-un proiect Django în comparație cu Flask? Consultațiacest tutorial pentru aplicații web Djangoși apoi vizualizați aceeași aplicație construită cu Flask.
Există, de asemenea, un repertoriu numitcompare-python-web-frameworksîn care aceeași aplicație web este codificată cu diferite webframeworks Python, motoare de modelare și mapatoare obiect-relaționale.
Resurse pentru cadre web
-
Building Your Own Python Web Frameworkeste o modalitate minunată de a învăța cum funcționează WSGI și multe alte piese care se combină pentru a face cadrele web utile dezvoltatorilor web.
-
12 cereri pe secundăexaminează modul în care cadrul web tradițional sincronFlask se compară cu un cadru asincron caSanic într-un punct de referință artificial și simplu. Rezultatele fac să pară că Sanic este mult mai rapid decât Flask, dar odată ce adăugați chiar și o cantitate de funcționalitate de bază la un proiect, inclusiv interogări ale bazelor de dateși modelare, rezultatele se egalizează. Miguel Grinbergal are, de asemenea, o lectură excelentă cu rezultate mai largi în acest articol în care le cere cititorilor să Ignoră toate benchmark-urile de performanță web, inclusiv acesta.
-
Când înveți cum să folosești unul sau mai multe framework-uri web este util să ai o idee despre ce face codul de sub copertă. Această postare despre construirea unui cadru Python simplu de la zero arată cum pot funcționa conexiunile HTTP, rutarea și cererile în doar320 de linii de cod. Această postare este grozavă chiar dacă cadrul rezultat este o simplificare a ceea ce cadre precum Django,Flask și Pyramid permit dezvoltatorilor să realizeze.
-
Există și un alt tutorial mai recent, în mai multe părți, despre construirea propriului cadru web în Python. Această serie se bazează pe proiectul Alcazar pe care autorul îl codifică în scopuri de învățare:
- Partea 1: Manipularea solicitărilor
- Partea 2: Rute, gestionari bazați pe clase și testare unitară
- Partea 3: Test Client and Templating Support
- Part 4: Exception Handling, Static Files and Middleware
-
Check out the answer to the”What is a web framework and how does it compare to LAMP?”question on Stack Overflow.
-
Another great series that digs behind the web framework magic is”Web Application from Scratch”. The four parts are:
- Part 1: handling HTTP requests and responses
- Part 2: abstracting Requests, Responses and Servers
- Part 3: request handlers and middleware
- Part 4: abstracting applications
-
Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.
-
Django vs Flask vs Pyramid: Choosing a Python Web Frameworkconține informații de fond și comparații de cod pentru aplicații web similare construite în aceste trei mari framework-uri Python.
-
Acest post fascinant de pe blog aruncă o privire la complexitatea codului mai multor framework-uri web Pythonfurnizând vizualizări bazate pe bazele lor de cod.
-
Referințele cadrelor web Python este un test al capacității de reacție a unui cadru cu codificarea unui obiect în JSON și returnarea acestuia ca răspuns, precum și cu recuperarea datelor din baza de date și redarea acestora într-un șablon. Nu au existat rezultate concludente, dar, cu toate acestea, rezultatul este distractiv de citit.
-
Ce cadre web folosiți și de ce sunt grozave?este o discuție pe Reddit, agnostică față de limbaj, despre cadrele web. Este interesant de văzut ce le place și ce nu le place programatorilor din alte limbaje la suita lor de cadre web în comparație cu principalele cadre Python.
-
Această întrebare votată de utilizatori & site-ul de răspunsuri a întrebat „Care sunt cele mai bune cadre web Python de uz general utilizabile în producție?”.” Voturile nu sunt la fel de importante ca și lista numeroaselor cadre care sunt disponibile pentru dezvoltatorii Python.
-
Django vs. Flask in 2019: Which Framework to Chooselooks examinează cele mai bune cazuri de utilizare pentru Django și Flask împreună cu ceea ce le face unice, din punct de vedere educațional și al dezvoltării.
-
11 noi cadre web Pythonare o scurtă prezentare a câtorva cadre mai noi care sunt încă în curs de apariție,cum ar fi Sanic, Masoniteși Molten.
Listă de verificare pentru învățarea cadrelor web
-
Alegeți un cadru web Python major (Django sauFlask sunt recomandate) și rămâneți cu el. Când sunteți la început este mai bine să învățați mai întâi un singur cadru în loc să săriți de colo-colo încercând să înțelegeți fiecare cadru.
-
Work through a detailed tutorial found within the resources links on theframework’s page.
-
Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.
-
Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.