0% au considerat acest document util (0 voturi)
6 vizualizări89 pagini

Unitatea-4 Python

Documentul oferă o introducere în programarea GUI folosind Tkinter în Python, explicând conceptele de bază și bibliotecile disponibile. Se discută despre crearea aplicațiilor GUI, inclusiv pașii necesari pentru a iniția o fereastră și a adăuga widget-uri. De asemenea, sunt prezentate diferite tipuri de widget-uri disponibile în Tkinter, cum ar fi butoane, etichete și liste, împreună cu exemple de cod.

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
6 vizualizări89 pagini

Unitatea-4 Python

Documentul oferă o introducere în programarea GUI folosind Tkinter în Python, explicând conceptele de bază și bibliotecile disponibile. Se discută despre crearea aplicațiilor GUI, inclusiv pașii necesari pentru a iniția o fereastră și a adăuga widget-uri. De asemenea, sunt prezentate diferite tipuri de widget-uri disponibile în Tkinter, cum ar fi butoane, etichete și liste, împreună cu exemple de cod.

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Programare Python

[Link]. Anul IV Sem I

COLLEGE MALLAREDDY PENTRU FEMEI


(Instituț ie Autonomă-UGC, Guvernul Indiei)

PROGRAMARE ÎN PYTHON
Course Code: CS721PE

C. RAJEEV
Asistent. Prof.
CSE
MRECW.
UNITATEA-4
UNITATE - IV

Programarea GUI: Introducere, Tkinter ș i Programarea Python


Tur Scurt al Altora Interfeț e Grafice, Module Aferente ș i Alte Interfeț e Grafice.

Programare WEB: Introducere, Navigare pe web cu Python, Crearea


Clienț i web simpli, Clienț i web avansaț i, Servere de ajutor CGI
Procesarea datelor clientului, Construirea aplicaț iei CGI Avansate CGI, Web

(HTTP) Servere
Programare GUI:
Introducere:
Ce este o interfaț ă grafică de utilizator (GUI)?
Interfaț a grafică cu utilizatorul (GUI) nu este altceva decât o aplicaț ie de desktop care te ajută să

interacț ionează cu calculatoarele. Ele sunt folosite pentru a efectua diferite sarcini în desktopuri, laptopuri

ș i alte dispozitive electronice.

Aplicaț iile GUI, cum ar fi editorii de text, sunt folosite pentru a crea, a citi, a actualiza ș i a ș terge diferite tipuri de

fiș iere.

Aplicaț iile GUI precum Sudoku, Ș ah ș i Solitaire sunt jocuri pe care le poț i juca.

Aplicaț iile GUI precum Google Chrome, Firefox ș i Microsoft Edge sunt folosite pentru a naviga prin

internetul
Biblioteci Python pentru a crea interfeț e grafice utilizator:
Python oferă mai multe opț iuni/biblioteci diferite pentru scrierea programelor bazate pe GUI.
Acestea sunt enumerate mai jos:

Tkinter: Este cea mai simplă dintre toate bibliotecile. Este GUI standard al Python.
pachetul Interfaț ă Utilizator). Este cel mai utilizat toolkit pentru programarea GUI în
Python.

2. JPython: Este platforma Python pentru Java care oferă scripturi Python fără întreruperi
accesaț i bibliotecile de classe Java pentru masina locală.

3. wxPython: Este un toolkit GUI open-source, multi-platformă, scris în C++. Este unul dintre
alternative la Tkinter, care este inclus în Python.

Există multe alte interfeț e (Kivy, Python QT) disponibile pentru GUI. Dintre toate
aceasta,Tkinter este preferat de mulț i învăț ăcei ș i dezvoltatori doar din cauza cât de simplu
ș i uș or este.
Ce sunt Tcl, Tk ș i Tkinter?

Tkinter este biblioteca GUI implicită a Python-ului. Este bazată pe toolkit-ul Tk, iniț ial

proiectat pentru Limbajul de Comandă Tool (Tcl).

Datorită popularităț ii Tk, a fost portat într-o varietate de alte limbaje de scripting,
inclusiv Perl (Perl/Tk), Ruby (Ruby/Tk) ș i Python (Tkinter).

tkinter este un modul Python încorporat folosit pentru a crea aplicaț ii GUI simple. Este cel mai

modul utilizat frecvent pentru aplicaț ii GUI în Python.

Nu trebuie să-ț i faci griji cu privire la instalarea modulului Tkinter, deoarece acesta vine
cu Python default.
>>>import Tkinter-------------python 2.x
>>>import tkinter-------------python 3.x
Dacă interpretul dumneavoastră Python nu a fost compilat cu suport pentru Tkinter, importul modulului eș uează:

>>>import Tkinter

Urmărire (ultima în partea de jos):

Fiș ier "<stdin>", linia 1, în ?


Fiș ier "/usr/lib/python1.5/lib-tk/[Link]", linia 8, în ?
import _tkinter # Dacă acest lucru dă eroare, Python-ul tău ar putea să nu

fi configurat pentru Tk
ImportError: No module named _tkinter
Tkinter ș i programare Python:
Crearea unei aplicaț ii GUI folosind Tkinter este o sarcină uș oară. Tot ce trebuie să faci este să efectuezi

paș ii următori -
1. importând tkinter
Este la fel ca importarea oricărui alt modul în codul python. Reț ineț i că numele lui
modulul în Python 2.x este ‘Tkinter’ ș i în Python 3.x este ‘tkinter’.
import tkinter
2. Creează fereastra principală a aplicaț iei GUI.

efectuăm operaț iuni ș i afiș ăm vizualuri ș i totul, în esenț ă.


3. Adăugaț i unul sau mai multe dintre widget-uri în aplicaț ia GUI.
4. Intra în bucla principală de evenimente pentru a lua măsuri împotriva fiecărui eveniment generat de utilizator.

Un ciclu de evenimente spune de fapt codului să continue să afiș eze fereastra până când noi

Închideț i-l manual. Acesta rulează într-o buclă infinită în back-end.


Pentru a crea o fereastră simplă cu textul Salut Lume!
import tkinter
fereastră = [Link]()
fereastră.titlu("GUI") pentru a renuma titlul ferestrei
pack este folosit pentru a afiș a obiectul în fereastră

label = [Link](window, text = "Hello World!").pack()


[Link]()
Steps:-
1. importă modulul tkinter.
2. Ini ț ializaț i managerul de feronire cu metoda [Link]() ș i asigna ț i-l la un
fereastrăvariabilă. Această metodă creează o fereastră goală cu închidere, maximizare ș i

minimalizaț i butoanele.

Tk(numeEcran=None, numeBază=None, numeClasă='Tk', folose ș teTk=1)


Pentru a crea o fereastră principală, tkinter oferă o metodă, pentru a schimba numele ferestrei,

poț i schimba numeleClasei în cel dorit.


Codul de bază folosit pentru a crea fereastra principală a aplicaț iei este-
window = [Link]()
3.(op ț ional) Schimba ț i titlul feronului cum dori ț i cu
[Link](titlul_fereastrei).

4. Eticheta este folosită pentru a insera anumite obiecte în fereastră. Aici, adăugăm o etichetă cu

câteva texte.
atributul pack() al widget-ului este folosit pentru a afiș a widget-ul într-o dimensiune de care are nevoie.

5. În cele din urmă, metoda mainloop() pentru a afi ș a fereastra până când o închide ț i manual.
Widget-uri Tk:
Widget-urile sunt ceva asemănător cu elementele din HTML. Vei găsi diferite tipuri de widget-uri pentru

tipurile diferite de elemente în Tkinter.


1. Button :
Este folosit pentru a adăuga butoane într-o aplica ț ie Python.

w = Buton ( master, opț iune=valoare, ... )


master− Acesta reprezintă fereastra părinte.
opț iuni− Iată lista celor mai frecvent utilizate opț iuni pentru acest widget.

Aceste opț iuni pot fi folosite ca perechi cheie-valoare separate prin virgule.

Comandă--Funcț ia sau metoda care trebuie apelată atunci când butonul este apăsat.
Activebackground--Background color when the button is under the cursor.
Activeforeground---Foreground color when the button is under the cursor.
Bd-----Border width in pixels. Default is 2.
Bg--Culoare normală de fundal.
Ex:
din tkinter import *
din tkinter import messagebox
top = Tk()
[Link]("100x100")
def helloCallBack():
msg = [Link]( "Hello Python", "Hello World")
B = Buton(top, text = "Salut", comandă = helloCallBack)
[Link]ă(x = 100,y = 100)
[Link]()
2. Pânză:
Canvasul este o zonă rectangulară destinată desenării imaginilor sau altor obiecte complexe.

layout-uri. Puteț i plasa grafice, text, widget-uri sau cadre pe un Canvas.


Sintaxă;
w = Canvas ( master, option=valoare, ... )
master− Acesta reprezintă fereastra părinte.
opț iuni− Iată lista celor mai frecvent utilizate opț iuni pentru acest widget.
Aceste opț iuni pot fi folosite ca perechi cheie-valoare separate prin virgule.

bd--Lăț imea marginii în pixeli. Implicit este 2.


bg--Culoare de fundal normală.
confine--Dacă este adevărat (varianta implicită), canvasul nu poate fi derulat în afara
zona derulantă.
Cursor--Cursor folosit în canvas ca săgeată, cerc, punct etc.
height--Size of the canvas in the Y dimension.
Highlightcolor--Color shown in the focus highlight.
Ex:

import tkinter

top = [Link]()

C = [Link](top, bg="albastru", înălț ime=250, lăț ime=300)

coord = 10, 50, 240, 210

arc = C.create_arc(coord, start=0, extent=150, fill="red“)

[Link]()

[Link]()
3. Widget de scară:
Widgetul scale este folosit pentru a implementa sliderul grafic în aplicaț iile Python, astfel încât

utilizatorul poate glisa prin intervalul de valori afiș ate pe glisor ș i selecta unul dintre
ei.
Putem controla valorile minime ș i maxime împreună cu rezoluț ia scalei.
Sintaxă
w = Scală(top, opț iuni)
O listă de opț iuni posibile este dată mai jos:
from_: Este folosit pentru a reprezenta un capăt al gamei de widget-uri.

către: Reprezintă o valoare cu virgulă flotantă sau întreagă care specifică celălalt capăt al

rangereprezentat de scară.
orient: Poate fi setat pe orizontală sau verticală, în funcț ie de tipul scalei.
bd: Dimensiunea marginii widget-ului. Implicit este de 2 pixeli.
bg: Culoarea de fundal a widgetului.
font: Tipul de font al textului widget-ului.

fg: Culoarea prim-plan a textului


Ex:
de la tkinter import *
master = Tk()
w = Scale(master, from_=0, to=100)
[Link]()
w = Scală(master, de la=0, la=200, orientare=HORIZONTAL)
[Link]()
bucloop()
4. Etichetă:

Eticheta este utilizată pentru a specifica caseta container în care putem plasa text sau imagini. Acest lucru

widgetul este folosit pentru a furniza mesajul utilizatorului despre alte widgeturi folosite în python

aplicaț ie.
Există diverse opț iuni care pot fi specificate pentru a configura textul sau partea de
text afiș at în eticheta.
Sintaxă:
w =Label (master, opț iuni)
• master este parametrul folosit pentru a reprezenta fereastra părinte.
• Există o serie de opț iuni care sunt folosite pentru a schimba formatul widget-ului.
bg: pentru a seta culoarea normală de fundal.
bgto setează culoarea de fundal normală.
comandă: a apela o funcț ie.
font: pentru a seta fontul pe eticheta butonului.
imagine: pentru a seta imaginea pe buton.
lăț ime: pentru a seta lăț imea butonului.
height” to set the height of the button.
Ex:
din tkinter import *
root = Tk()
var = StringVar()
label =Label( root, textvariable=var, relief=RAISED )
Salut!? Ce mai faci?
[Link]()
[Link]()

uș urare
Specifică aspectul unui
bordură decorativă în jurul etichetei.
Defaultul este FLAT.
5. Buton de selectare:

Acest widget este folosit pentru a afiș a un număr de opț iuni unui utilizator sub formă de butoane de comutare.

utilizatorul poate apoi să selecteze una sau mai multe opț iuni făcând clic pe butonul corespunzător fiecărei opț iuni

opț iune. (similar cu inputul checkbox HTML)


buton de verificare

din tkinter import *


import messagebox
importa tkinter
top = [Link]()
CheckVar1 = IntVar()
CheckVar2 = IntVar()
C1 =Checkbutton(top, text = "Muzică", variable = CheckVar1, onvalue = 1, offvalue
= 0, înălț ime=5, lăț ime = 20)
C2 =Checkbutton(top, text = "Video", variable = CheckVar2, onvalue = 1, offvalue =
0, înălț ime=5, lăț ime=20)
[Link]() [Link]() [Link]()
6. Intrare
Widgetul Entry este folosit pentru a oferi utilizatorului un câmp de text pe o singură linie pentru a accepta o

valoare de la utilizator.

Dacă doriț i să afiș aț i mai multe linii de text care pot fi editate, atunci ar trebui să folosiț i

theTextwidget.
Dacă doreș ti să afiș ezi una sau mai multe linii de text care nu pot fi modificate de utilizator,
atunci ar trebui să foloseș ti widgetulLabel.

Ex: Widget de Introducere

de la tkinter import *
top = Tk()
L1 =Label(top, text="Nume utilizator")

[Link]( partea =STÂNGA)

E1 = Intrare(top, bd =5)
[Link](lateral = DREAPTA)

[Link]()
7. Cadru:
Este folosit pentru a organiza grupul de widgeturi. Ac ț ionează ca un container.
care pot fi folosite pentru a susț ine celelalte widget-uri. Zonele dreptunghiulare

ecranului sunt folosite pentru a organiza widgeturile pentru python

aplicaț ie.

8. Listbox:
Widgetul Listbox este folosit pentru a afiș a o listă de elemente din care un
utilizatorul poate selecta un număr de articole.

9. Meniu:
Scopul acestui widget este să ne permită să creăm tot felul de meniuri
care poate fi folosit de aplicaț iile noastre. Funcț ionalitatea de bază oferă
moduri de a crea trei tipuri de meniu: pop-up, de nivel superior ș i derulant.
widget cadru
Widget Listbox

din tkinter import *


importaț i messagebox
import tkinter
top = Tk()
Lb1 =Lista_bx(top)
[Link](1, "Python")
[Link](2, "Perl")
[Link](3, "C")
[Link]ă(4, "PHP")
[Link](5, "JSP")
[Link](6, "Ruby")
[Link]()
[Link]()
Meniu
de la tkinter importă *
importaț i messagebox
import tkinter
top = Tk()
mb=Menubuton( top, text="File", relief=RAISED )
[Link]()
[Link] = Menu( mb, tearoff = 0 )
mb["menu"] = [Link]
Var1 = IntVar()
Var2 = IntVar()
[Link].add_checkbuton( label="Nou", variable=Var1 )
[Link].add_checkbuton ( label="deschide", variable=Var2 )
[Link]ă_buton_de_verificare ( etichetă="Salvează", variabilă=Var2 )
[Link].add_checkbuton ( label="Salvează ca", variable=Var2 )
[Link].add_checkbuton ( label="Închide", variable=Var2 )
[Link].add_checkbuton ( label="Ieș ire", variable=Var2 )
[Link]()
[Link]()
10. Buton de meniu

Poate fi definit ca meniul derulant care este afiș at utilizatorului


tot timpul. Este folosit pentru a oferi utilizatorului o opț iune de a selecta

alegerea adecvată există în cadrul aplicaț iei.


11. Message:
Este folosit pentru a arăta mesajul utilizatorului cu privire la comportament

aplicaț ia python.
Afiș ează mesajele text utilizatorului care nu pot fi editate.
Textul mesajului con ț ine mai multe linii. Cu toate acestea,
mesajul poate fi afiș at doar într-un singur font.
12. MessageBox:
Este folosit pentru a afi ș a casetele de mesaj în aplica ț iile tale.

Oferă o serie de funcț ii pe care le poț i folosi pentru a afiș a un


mesaj adecvat.
Unele dintre aceste funcț ii sunt showinfo, showwarning, showerror,
askquestion, askokcancel, askyesno, and askretryignore.
Widget mesaj

din tkinter import *

root = Tk()

var = StringVar()

label =Message( root, textvariable=var, relief=RAISED )

Hei!? Ce mai faci?

[Link]()

[Link]()
Widget de mesaj
de la tkinter import *
din tkinter import messagebox
top = Tk()
[Link]("100x100")
def helloCallBack():
msg = [Link]( “Say Hello", "Hello World")
B = Buton(peste, text = "Spune Salut", comandă = helloCallBack)
[Link]ă(x = 100,y = 100)
[Link]()
13. Buton radio:
Set of buttons of whichonly one can be "pressed" (similar to
HTML input radio

14. Scrollbar:
Widget-ul de scroll este folosit pentru a derula conț inutul în jos.
alte widget-uri precum listbox, text ș i canvas. Cu toate acestea, noi

poate crea de asemenea bare de derulare orizontale pentru widgetul de intrare.

[Link]
Este folosit pentru a afiș a datele textuale în aplicaț ia Python.
Cu toate acestea, Tkinter ne oferă widgetul Entry care este utilizat
pentru a implementa caseta de text pe o singură linie.

Widgetul Text este folosit pentru a afisa text pe mai multe linii

text formatat cu diverse stiluri ș i atribute.


Widget-ul Text este utilizat pentru a oferi utilizatorului editorul de text.
Buton radio
din tkinter importă *

defsel():
selection = "You selected the option " + str([Link]())
[Link](text = selectie)

radacina = Tk()
var = IntVar()
R1 =Radiobutton(root, text=“C", variable=var, value=1,
comandă=sel)
[Link]( ancora = W )

R2 =Radiobutton(root, text=“C++", variable=var, value=2,


comandă=sel)
[Link]( ancoră = W )

R3 =Radiobutton(root, text=“PYTHON", variable=var, value=3,


comandă=sel)
[Link]( ancoră = W)

label = Label(root)
[Link]()
[Link]()
Ex: scroll bar:

din tkinter import *

root = Tk()

scrollbar = Scrollbar(root)

[Link]( partea = DREAPTA, umple = Y )

mylist = Listbox(root, yscrollcommand = [Link])

pentru linie în intervalul(50):

[Link](END, "Aceasta este linia numărul " + str(line))

[Link]( latură = STÂNGA, umple = AMBELE )

[Link]( comanda = [Link] )

mainloop()
Ex: text
din tkinter import *
def onclick():
trece
root = Tk()
Text(root)
[Link](INSERT, "Bună.....")
La revedere.....
[Link]()
text.tag_add("aici", "1.0", "1.4")
text.tag_add("start", "1.8", "1.13")
text.tag_config("aici", background="galben", foreground="albastru")
text.tag_config("start", fundal="negru", primplan="verde")
[Link]()
17. spinbox:
Widgetul Spinbox este o variantă a widgetului standard Tkinter Entry, care poate fi
utilizat pentru a selecta dintr-un număr fix de valori.

Ex:
din tkinter import *
master = Tk()
w = Spinbox(master, de la=0, la=10)
[Link]()
bucle principal()
Tur Scurt al Altora Interfeț e Grafice

patru dintre cele mai populare ș i disponibile kituri de instrumente de acolo:

Tix (Extensii Tk pentru Interfa ț ă)


Pmw (extensia Tkinter pentru Python MegaWidgets)
3. wxPython (legătura Python la wxWidgets) ș i
4. PyGTK (binding Python pentru GTK+).

Modulul Tix este deja disponibil în biblioteca standard Python. Trebuie să


descarcă celălalt toolkit, care este de la terț i.

Pmwis este doar o extensie pentru Tkinter, este cel mai uș or de instalat (doar extrage în
pachetele dvs. de site).

wxPython ș i PyGTK implică descărcarea mai multor fiș iere ș i construirea.

ne-ar plăcea să introducem Controlul sau SpinButton ș i ComboBox.


Aplicaț ie utilizând diverse interfeț e grafice sub Win32
1. Tix (Extensii Tk Interface):
Modulul Tix oferă un set suplimentar bogat de widget-uri.
Biblioteca TheTix oferă cele mai multe dintre widgeturile de care este nevoie frecvent ș i care lipsesc din

standard Tk: HList, ComboBox, Control (SpinBox) ș i o assortare de elemente derulante


widgeturi.
Tix include de asemenea multe alte widget-uri care sunt în general utile într-o gamă largă de

applications:NoteBook, FileEntry, PanedWindow, etc.


Widgetul HList poate fi folosit pentru a afiș a orice date care au o structură ierarhică, pentru
exemplu, arbori de directoare ale sistemului de fiș iere
2. Pmw (extensia Tkinter Python MegaWidgets):

Este un set de instrumente pentru construirea de widgeturi compuse de nivel înalt în Python folosind

pachetul tkinter.

Constă dintr-un set de clase de bază ș i o bibliotecă de megawidget-uri flexibile ș i extensibile


construit pe această temelie.

Aceste megawidget-uri includ notebook-uri, combobox-uri, widget-uri de selecț ie, widget-uri împărț ite,

widget-uri derulante, feronerie de dialog, etc.


3. wxPython (legătură Python la wxWidgets):
Permite programatorilor Python să creeze programe cu o func ț ionalitate robustă ș i foarte avansată

interfaț ă grafică de utilizare, simplu ș i uș or.

wxPython este open source, ceea ce înseamnă că este gratuit pentru oricine să-l folosească ș i sursa

codul este disponibil pentru oricine să-l vizualizeze ș i să-l modifice. Ș i oricine poate contribui cu soluț ii sau

îmbunătăț iri aduse proiectului.

wxPython este un toolkit multiplatformă. Aceasta înseamnă că acela ș i program va rula pe


mai multe platforme fără modificări.

CurrentlySupported platformsare Microsoft Windows, Mac OS X and macOS, and


Sisteme Linux sau alte sisteme de tip unix cu biblioteci GTK2 sau GTK3.

În cele mai multe cazuri, widgeturile native sunt folosite pe fiecare platformă pentru a oferi o experienț ă 100% nativă.

aspectul ș i senzaț ia pentru aplicaț ie.


4. PyGTK (legătura Python la GTK+):

GTK este un toolkit de interfa ț ă pentru utilizator, open-source ș i multiplatformă, pentru dezvoltare.

frameworks.

Sunt cadre populare utilizate pentru Linux deoarece sunt open-source ș i oferă
dezvoltatorilor un set puternic de instrumente pentru a proiecta Interfeț e Grafice ale Utilizatorului.

PyGTK este un set de wrapper-e Python pentru biblioteca de interfaț ă grafică GTK+.

GTK este doar un toolkit de widget-uri pentru aplicaț iile GNOME (colecț ie de aproximativ 30
aplica ț ii), LXDE (mediu desktop gratuit cu resurse comparativ reduse
cerinț e) ș i Xfce (mediu de birou gratuit ș i open-source pentru Linux ș i BSD
sisteme de operare.) Medii desktop.
Modulele Asociate ș i Alte Interfeț e Grafice

Există alte sisteme de dezvoltare GUI care pot fi utilizate cu Python.


Programare web:
Introducere:
1. Navigarea pe web: Calculatoare Client/Server (Din nou?!?)

Navigarea pe web se încadrează în aceeaș i arhitectură client/server pe care am văzut-o.


repetat.

De data aceasta, clienț ii web sunt browsere, aplicaț ii care le permit utilizatorilor să găsească documente pe

Internetul

De cealaltă parte se află serverele web, procese care rulează pe gazda unui furnizor de informaț ii

computere. Aceste servere aș teaptă clienț ii ș i cererile lor de documente, le procesează ș i


returnaț i datele solicitate.

Aici, un utilizator rulează un program client Web, cum ar fi un

navigaț i ș i faceț i o conexiune la un server Web în altă parte


pe Internet pentru a obț ine informaț ii.
Navigare pe web cu Python: Crearea de clienț i web simpli:
Un lucru de avut în vedere este că un browser este doar un tip de client web. Orice
o aplicaț ie care face o cerere de date de la un server Web este considerată un "client." Este
posibil să creaț i alț i clienț i care să retragă documente sau date de pe Internet.

Un motiv important pentru a face acest lucru este că un browser oferă doar o capacitate limitată, adică, el

este folosit în principal pentru a vizualiza ș i a interacț iona cu site-urile web.

pe de altă parte, un program client, are capacitatea de a face mai mult, nu poate doar
descarcă datele, dar le poate ș i stoca, manipula sau poate chiar să le transmită către
o altă locaț ie sau aplicaț ie.

Aplicaț ii care folosesc modulul urllib pentru a descărca sau a accesa informaț ii pe Web
[utilizând fie [Link](), fie [Link]()] poate fi considerat un client Web simplu.
Tot ce trebuie să faceț i este să furnizaț i o adresă web validă.
Locaț ii Uniforme de Resurse:
Navigarea simplă pe web implică utilizarea adreselor web numite URL-uri (Uniform Resource)

Locatori). Astfel de adrese sunt folosite pentru a localiza un document pe Web sau pentru a apela un CGI

program pentru a genera un document pentru clientul tău.

URL-urile fac parte dintr-un set mai mare de identificatori cunoscuț i sub numele de URI-uri (Uniform Resource)

Identificatori).

Un URL este pur ș i simplu un URI care foloseș te un protocol sau un sistem existent (de exemplu, http, ftp, etc.) ca

parte a adresării sale.

La fel ca adresele de pe stradă, adresele web au o anumită structură. O adresă de stradă americană

de obicei este de forma "număr denumire stradă," adică, 123 Strada Principală. Se diferenț iază de
alte ț ări, care au propriile lor reguli.
Un URL foloseș te formatul:

prot_sch://net_loc/path;params?query#frag
Din nou, net_loc poate fi împărț it în mai multe componente, unele necesare, altele
opț ional. Stringul net_loc arată astfel:
utilizator:parolă@host:port

Dintre cele patru, numele gazdei este cel mai important pentru rularea serverului web.

Numărul portului este necesar doar dacă serverul Web rulează pe un număr de port diferit.
din modul implicit.

Numele de utilizator ș i parolele sunt folosite doar atunci când se efectuează conexiuni FTP.
Pentru a trata URL-urile în funcț ionalităț i ș i capacităț i complet diferite. Python oferă două
module diferite,. Unul este urlparse, iar celălalt este urllib.

1. Modul urlparse:
Modulul urlparse oferă funcț ionalitate de bază pentru a manipula ș irurile URL.
Aceste funcț ii includ -
1. urlparse()
2. urlunparse(), ș i
3. urljoin()
[Link]():
urlparse() descompune un ș ir URL în unele dintre componentele majore (prot_sch,
net_loc, cale, parametrii, interogare, frag).

Are următoarea sintaxă:


urlparse(urlstr, defProtSch=None, allowFrag=None)
urlparse() analizează urlstr într-un tuplu de 6 elemente (prot_sch, net_loc, cale, parametri, interogare,

frag)
defProtSchindicates un protocol de reț ea implicit sau un schemă de descărcare în cazul în care nu este

furnizat [Link].

[Link] a flag that signals whether or not a fragment part of a URL is allowed.

Iată ce iesire are urlparse() atunci când primeș te un URL:

>>> [Link]('[Link]

ParseResult(scheme='http', netloc='[Link]', path='/doc/[Link]', params='',


query='', fragment='')
ii. [Link]():
urlunparse() face exact opusul lui urlparse() îi îmbină un tuplu de 6 (prot_sch, net_loc,
path, params, query, frag) urltup, care ar putea fi rezultatul urlparse(), într-o singură
Ș ir URL ș i îl returnează.
Sintaxă:
urlunparse(urlparse(urlstr))
Ex:
Urlunparse(urlparse('[Link]
Output:
[Link]

În acest caz, parametrii, interogarea ș i fragmentul lipsesc cu toț ii în URL-ul original.


Noua adresă URL nu arată la fel ca originalul, dar este echivalentă conform
standard.
iii) [Link]():
Funcț ia urljoin() este utilă în cazurile în care sunt necesare multe URL-uri corelate,
de exemplu, URL-urile pentru un set de pagini care urmează să fie generate pentru un site web.

sintaxa pentru urljoin() este:

urljoin(baseurl, newurl, allowFrag=None)

urljoin() ia baseurl ș i îmbină calea sa de bază (net_loc plus calea completă până la, dar nu
inclusiv, un fiș ier la final) cu newurl.

De exemplu:
>>> [Link]('[Link] \
... 'current/lib/[Link]')
'[Link]
Modulul urllib:
urllib este un modul Python care poate fi folosit pentru a deschide URL-uri (Locaț ii de Resurse Uniforme).

defineș te funcț ii ș i clase pentru a ajuta în acț iunile URL.


Urllib este un pachet care colectează mai multe module pentru a lucra cu URL-uri, cum ar fi:

[Link] pentru deschidere ș i citire.


[Link] pentru analizarea URL-urilor

[Link] pentru excepț iile ridicate


[Link] pentru analizarea fiș ierelor [Link]
Dacă urllib nu este prezent în mediul tău, execută codul de mai jos pentru a-l instala.
pip instala urllib
[Link]()
urlopen() deschide o conexiune Web la ș irul URL dat ș i returnează un obiect asemănător unui fiș ier.

sintaxă:
urlopen(urlstr,postQueryData=None)
urlopen() deschide URL-ul indicat de byurlstr. Dacă nu este dat niciun protocol sau schemă de descărcare, sau

dacă se transmite un schemă „file“, urlopen() va deschide un fiș ier local.

Pentru toate cererile HTTP, tipul normal de cerere este "GET." În aceste cazuri, ș irul de interogare

furnizat pe Web, ar trebui să fie oferit ca parte a urlstr.

Dacă metoda de solic a 'POST' este dorită, atunci stringul de interogare ar trebui să fie plasat în

variabila postQueryData.
Cereri GET ș i POST sunt cele două moduri de a "încărca" date pe un server Web. Când o
o conexiune de succes este realizată, urlopen() returnează un obiect asemănător unui fiș ier, ca ș i cum destinaț ia ar fi

un fiș ier deschis în modul de citire.

for example, if our file object is f, then our "handle" would support the expected read
metode precum [Link](), [Link](), [Link](), [Link]() ș i [Link]().
[Link]():
Sintaxă:
urlretrieve(urlstr, localfile=None, downloadStatusHook=None)
Mai degrabă decât să citească de la URL, aș a cum face urlopen(), urlretrieve() va descărca pur ș i simplu.

fiș ierul HTML întreg situat la urlstr pe discul tău local.


Va stoca datele descărcate într-un fiș ier local, dacă este specificat, sau într-un fiș ier temporar, dacă nu.

Dacă fiș ierul a fost deja copiat de pe Internet sau dacă fiș ierul este local, nu există nicio consecinț ă ulterioară.

descărcarea va avea loc.


ThedownloadStatusHook,if provided, is a function that is called after each block of data
a fost descărcat ș i livrat.
Se numeș te cu următoarele trei argumente:
1. numărul de blocuri citite până acum,

2. dimensiunea blocului în octe ț i, ș i

3. dimensiunea totală (byte) a fi ș ierului.


Acest lucru este foarte util dacă implementezi informaț ii despre „starea descărcării” utilizatorului într-o

afiș aj bazat pe text sau grafic.


urlretrieve() returnează un tuplu 2, (nume_fiș ier, antete_mime).

numele de fiș ier este denumirea fiș ierului local care conț ine datele descărcate.

mime_hdrs este setul de antete MIME returnate de serverul Web care răspunde.
[Link]() ș i urllib.quote_plus():
Funcț iile quote() preiau date URL ș i le "encodează" astfel încât să fie "potrivite" pentru

includerea ca parte a unui ș ir URL.


Sintaxă:
citat(urldata, sigur='/')
Caracterele care nu sunt niciodată convertite includ virgulele, underscore-urile, punctele ș i liniile de legătură.

ș i alfanumerice. Toate celelalte sunt supuse conversiei.

În special, caracterele interzise (?,!, spaț ii) sunt schimbate în hexazecimal


echivalentele ordinale precedate de un semn procentual (%), adică, "%xx" unde "xx" este
reprezentarea hexazecimală a valorii ASCII a unui caracter.

Ex:
>>> import urllib
Salut Lume@Python2
Bună lume@Python2
Când se apelează funcț ia quote*(), ș irul de date este convertit într-un ș ir echivalent care poate fi

partea unei ș ir de URL.

Reț ineț i că funcț ia quote() consideră caracterele sigure în mod implicit. Asta înseamnă că nu
encode / character .

Funcț ia quote() acceptă un parametru denumit safe al cărui valoare implicită este/
Dacă doreș ti să codifici /caracterul de asemenea, atunci poț i face acest lucru furnizând un ș ir gol

în parametrul thesafe aș a -
>>> [Link]('/', safe='')
%2F‘
quote_plus() este similar cu quote() cu exceptia ca encodeaza si spatiile in semne de plus ( + ).
Ex:
>>> import urllib
Salut Lume@Python2
Hello Lume@Python2
[Link]()
urlencode() ia un dic ț ionar de perechi cheie-valoare ș i le encodează pentru a fi incluse ca
o parte a unei interogări într-un ș ir URL de cerere CGI.

Perechile sunt în formatul "cheie=valoare" ș i sunt delimitate prin ampersanduri ( & ).

Ex:
>>> aDict = { 'name': 'Georgina Garcia', 'hmdir': '~ggarcia' }
>>> [Link](aDict)
'name=Georgina+Garcia&hmdir=%7eggarcia'
Modulul urllib2:
urllib2 este un modul Python care poate fi folosit pentru a accesa URL-uri.

Modulul urllib2 defineș te funcț ii ș i clase care ajută la deschiderea URL-urilor


(în principal HTTP) într-o lume complexă (autentificare de bază ș i digest, redirecț ionări,

biscuiț i ș i altele)
Diferenț a între urllib ș i urllib2
Deș i ambele module fac lucruri legate de cererile URL, ele au funcț ionalităț i diferite.
urllib2 poate accepta un obiect Request pentru a seta anteturile pentru o cerere URL, urllib

acceptă doar un URL.


urllib oferă metoda urlencode care este utilizată pentru generarea interogărilor GET
strings, urllib2 nu are o astfel de funcț ie.
Clienț i web avansaț i
Browser-ele web sunt clienț i web de bază. Ele sunt folosite în principal pentru căutare ș i

descărcarea documentelor de pe Web.


Clienț ii avansaț i ai web-ului sunt acele aplicaț ii care fac mai mult decât să descarce

documente unice de pe Internet.


Putem explora ș i descărca pagini de pe Internet din diferite motive, unele dintre
care includ:
● Indexarea într-un motor de căutare mare precum Google sau Yahoo!
● Navigare offline descărcând documente pe un hard disk local ș i
rearanjarea hyperlink-urilor pentru a crea aproape o imagine oglindă pentru navigarea locală

● Descărcarea ș i stocarea în scopuri istorice sau de arhivare, sau


● Cache-ul paginilor web pentru a salva timpul de descărcare superflu necesar la vizitele repetitive pe site.
CGI: Ajutând serverele web să proceseze datele clienț ilor
CGI (Interfaț a Comună de Gateway) este o tehnologie web ș i un protocol care defineș te o modalitate
pentru un server web (server HTTP) să interacț ioneze cu aplicaț ii externe, de exemplu, PHP.

CGI este folosit ca o interfa ț ă între serverul web ș i componentele instalate suplimentar

aplicaț ii care generează conț inut web dinamic. Aceste aplicaț ii sunt numite scripturi CGI
ș i sunt scrise în diferite scripturi ș i limbaje de programare, cum ar fi PHP, Perl, Python,
etc.

CGI permite programelor CGI să proceseze formulare HTML sau alte date care vin de la clienț i,

ș i apoi permite programelor CGI să trimită un răspuns înapoi la client


.
Răspunsul poate fi documente HTML, fiș iere GIF, clipuri video sau orice date pe care clientul
browserul poate vizualiza. Aceasta face ca paginile tale web să fie interactive cu utilizatorul.
Când un client solicită un document de la un server, serverul găseș te fiș ierul ș i îl trimite.
client
Cu toate acestea, dacă un client solicită un program aCGI, serverul acț ionează pur ș i simplu ca un intermediar

între client ș i programul CGI.


what happens when a client requests a CGI process?

1. Clientul trimite o cerere către serverul care rulează pe masina ta. Cererea ar putea fi
pentru un document, sau ca conț inutul unui formular HTML.

Dacă cererea este pentru un document regulamentar (cum ar fi un document HTML sau un fiș ier .GIF), atunci

serverul trimite acel document direct înapoi clientului.

Dacă cererea este date destinate unei aplicaț ii externe, atunci serverul trebuie să folosească CGI.
pentru a rula acea aplicaț ie.

De exemplu, cererea clientului ar putea fi să caute într-o bază de date. Aplicaț ia CGI
preia criteriile de căutare, caută în baza de date, apoi trimite rezultatele înapoi clientului.
2. Când un server prime ș te o solicitare care trebuie gestionată de o aplica ț ie externă
(o cerere aCGI) pe care serverul o creează o copie a sa.

Acest al doilea proces se numeș te procesul CGI deoarece este procesul în care
Programul CGI va rula.

Procesul CGI are toate aceleaș i căi de comunicare ca ș i procesul serverului


are. Singurul scop al procesului CGI este să stabilească comunicaț ii între
Program CGI ș i serverul.
3. Programul CGI răspunde clientului.

Programul CGI preia datele pe care serverul le furnizează prin intermediul mediului

variabile, intrare standard sau argumente de linie de comandă.

Procesează datele, contactează orice servicii externe de care are nevoie ș i apoi trimite un
răspuns către server prin intermediul căilor de date folosind ieș irea standard.

Serverul ia apoi răspunsul programului ș i îl trimite înapoi către software-ul client.

Programul tău poate să fie capabil să emită orice tip de date de care are nevoie, inclusiv HTML, GIF-uri sau
JPEG-uri.
Aplicaț ii CGI:
Aplicaț iile CGI care creează HTML-ul sunt de obicei scrise într-una din multe limbaje de programare de nivel înalt.

limbaje de programare de nivel înalt care au capacitatea de a accepta datele utilizatorului, de a le procesa ș i de

returnaț i HTML înapoi la server.

O aplicaț ie CGI este uș or diferită de un program tipic.


Principalele diferenț e sunt în aspectele de input, output ș i interacț iune cu utilizatorul.
un program de calculator.

Când un script aCGI începe, acesta trebuie să recupereze datele formularului furnizate de utilizator, dar

trebuie să obț ină aceste date de la clientul web, nu de la un utilizator de pe maș ina serverului ș i nici de la

fiș ier disc.


Ieș irea diferă în sensul că orice date trimise la ieș irea standard vor fi trimise înapoi la conectat
Client web mai degrabă decât pe ecran, fereastră GUI sau fiș ier pe disc.

Datele returnate trebuie să fie un set de antete valide urmate de HTML. Dacă nu este, va apărea o eroare.

va avea loc deoarece clienț ii Web sunt un browser, el înț elege doar date HTTP valide (de exemplu, MIME

antete ș i HTML).
Modulul cgi
Există o clasă principală în modulul cgi, adică clasa FieldStorage.
Această clasă ar trebui să fie instanț iată atunci când un script CGI Python începe, deoarece va citi toate
informa ț ii relevante despre utilizator din clientul web (prin intermediul serverului web).

Odată ce acest obiect a fost instanț iat, acesta va consta dintr-un obiect asemănător unui dicț ionar care are

un set de perechi cheie-valoare. Cheile sunt numele elementelor de formă care au fost transmise
prin intermediul formularului, în timp ce valorile conț in datele corespunzătoare.

Aceste valori în sine pot fi unul dintre cele trei obiecte. Ele pot fi

Obiecte FieldStorage (instanț e)


MiniFieldStorage, care este folosit în cazurile în care nu există încărcări de fiș iere sau formulare multipart.
datele sunt implicate. Instanț ele MiniFieldStorage conț in doar perechea cheie-valoare a numelui

ș i datele.
În cele din urmă, ele pot fi o listă de astfel de obiecte. Aceasta se întâmplă atunci când un formular conț ine mai mult decât

un element de intrare cu acelaș i nume de câmp.


Pentru formulare web simple, vei găsi de obicei toate instanț ele MiniFieldStorage.
Construirea aplicaț iilor CGI:
1. Configurarea unui server web
2. Crearea Paginii de Formular

3. Generarea paginii de rezultate


4. Site-uri web complet interactive

1. Configurarea unui server web:


Pentru a lucra cu dezvoltarea CGI în Python, trebuie mai întâi să instalaț i un server Web,

configurează-l pentru a gestiona cererile PythonCGI, ș i apoi dă serverului web acces la


scripturile tale CGI.

Dacă doreș ti un server Web real, probabil că vei descărca ș i instala Apache. Există
Plug-in-uri sau module Apache pentru gestionarea CGI Python.
Dacă vrei să porneș ti cel mai basic server Web, doar execută-l direct cu Python:
$ python -m CGIHTTPServer

Aceasta va porni un server web pe portul 8000 pe maș ina ta curentă din actual
director. Apoi, poț i crea un Cgi-bin chiar sub directorul din care te
am început serverul ș i am pus scripturile tale Python CGI acolo.

Pune câteva fiș iere HTML în acel director ș i poate câteva scripturi .py CGI în Cgi-bin, ș i tu
sunteț i pregătiț i să "navigaț i" direct către acest site web cu adrese care arată cam aș a:
[Link]
[Link]
2. Crearea paginii de formular

Acest fiș ier HTML ([Link]) prezintă un formular utilizatorului cu un câmp gol pentru
numele utilizatorului ș i un set de butoane radio pentru ca utilizatorul să aleagă.

1 <HTML><HEAD><TITLE> După cum poț i vedea în cod,


Demo CGI 2 Prieteni (ecran static) formularul con ț ine două câmpuri de introducere

3 </TITLE></HEAD> variabile: persoană ș i cum


4 <BODY><H3>Lista de prieteni pentru: <I>UTILIZATOR NOU</I></H3>
multe. Valorile acestor două
5 <FORM ACTION="/cgi-bin/[Link]"> câmpurile vor fi transmise către noi
6 <B>Introduceț i numele dumneavoastră:</B>
script CGI, [Link].
7 <INPUT TYPE=text NAME=personVALUE="USER NOU" SIZE=15>
Câț i prieteni ai?
9 <INPUT TYPE=radio NAME=howmany VALUE="0" CHECKED> 0
10 <INPUT TYPE=radio NAME=howmanyVALUE="10"> 10
11 <INPUT TYPE=radio NAME=câteVALUE="25"> 25
12 <INPUT TYPE=radio NAME=howmany VALUE="50"> 50
13 <INPUT TYPE=radio NAME=howmanyVALUE="100"> 100
14 <P><INPUT TYPE=submit></FORM></BODY></HTML>
[Link] într-un client
Pagina de prieteni în IE6 pe Win32 ([Link])
[Link] paginii de rezultate:
Introducerea este efectuată de utilizator ș i butonul „Trimite” este apăsat.
Atunci când acest lucru se întâmplă, scriptul din [Link] este executat prin CGI.

Acest script CGI preia persoana ș i câte câmpuri din formular ș i foloseș te aceste date
pentru a crea ecranul de rezultate generate dinamic.
1 #!/usr/bin/env python([Link])
2
3import cgi
4
5 reshtml = '''Tip de conț inut: text/html\n
6 <HTML><HEAD><TITLE>
Demo CGI 7 Prieteni (ecran dinamic)
8 </TITLE></HEAD>
9 <BODY><H3>Lista de prieteni pentru: <I>%s</I></H3>
Numele tău este: <B>%s</B><P>
Ai <B>%s</B> prieteni.
12 </BODY></HTML>'''
13
14 form = [Link]()
15 cine = form['persoană'].valoare
16 howmany = form['howmany'].value
17print reshtml % (cine, cine, câț i)
Acest script conț ine toată puterea de programare pentru a citi inputul formularului ș i a-l procesa, aș a cum

bine, de asemenea, returnează pagina HTML rezultată utilizatorului.

presupunând că utilizatorul a tastat "erick allen" ca nume ș i a făcut clic pe butonul de opț iune "10 prieteni"

buton.
4. Site-uri web complet interactive:

Un utilizator introduce informaț iile sale din pagina de formular. Apoi procesăm datele ș i
afiș aț i o pagină de rezultate.

Acum, vom adăuga un link la pagina de rezultate care va permite utilizatorului să se întoarcă la formular.

pagina, dar mai degrabă decât să prezentăm un formular gol, vom completa datele pe care utilizatorul le-a

deja furnizată.
CGI avansat
Aceste CGI avansate includ utilizarea cookie-urilor, datele cache salvate pe partea clientului
valori multiple pentru acelaș i câmp CGI ș i încărcarea fiș ierelor folosind trimiterea formularului multipart.

Folosirea cookie-urilor în CGI

Pentru un site web comercial, este necesar să menț ină informaț iile de sesiune între diferite
pagini.

De exemplu, o înregistrare a unui utilizator se încheie după completarea multor pagini. Cum să menț ii

informaț iile sesiunii utilizatorului pe toate paginile web?

În multe situaț ii, utilizarea cookie-urilor este cea mai eficientă metodă de a reț ine ș i

preferinț e de urmărire, achiziț ii, comisioane ș i alte informaț ii necesare pentru o mai bună
experienț a vizitatorului sau statisticile site-ului.
Cum funcț ionează?
Când serverul trimite niș te date browser-ului vizitatorului sub formă de cookie. Browserul
poate accepta cookie-ul. Dacă o face, este stocat ca un record de text simplu pe hard disk-ul vizitatorului

conduce.
Acum, când vizitatorul ajunge pe o altă pagină a site-ului tău, cookie-ul este disponibil pentru
recuperare. Odată recuperate, serverul tău ș tie/îș i aminteș te ce a fost stocat.
Cookie-urile sunt un registru de date în text simplu format din 5 câmpuri de lungime variabilă -

Expires− Thedate the cookiewill expire. If this is blank, the cookie will expire when the
vizitatorul părăseș te browserul.

Domeniu− Numele de domeniu al site-ului tău.

Cale− Calea către directorul sau pagina web care setează cookie-ul. Aceasta poate fi goală dacă tu
vrea să recupereze cookie-ul din orice director sau pagină.
Securizat− Dacă acest câmp conț ine cuvântul "securizat", atunci cookie-ul poate fi recuperat numai cu
un server securizat. Dacă acest câmp este gol, nu există restricț ii de acest fel.

Name=Value− Cookies are set and retrieved in the form of key and value pairs.
Configurarea Cookies
Este foarte uș or să trimiti cookie-uri către browser. Aceste cookie-uri sunt trimise împreună cu HTTP

Antetul înainte de câmpul Content-type. Presupunând că doriț i să setaț i UserID ș i Parola ca


biscuiț i.
Setarea cookie-urilor se face după cum urmează -

Folosim headerul HTTP Set-Cookie pentru a seta cookie-uri.

Este opț ional să setăm atributele cookie-urilor precum Expiră, Domeniu ș i Cale.
Este de remarcat că cookie-urile sunt setate înainte de linia "Content-type:text/html ."
Retragerea cookie-urilor:

Este foarte uș or să recuperezi toate cookie-urile setate. Cookie-urile sunt stocate în mediul CGI

variabilaHTTP_COOKIEș i vor avea următoarea formă -


key1 = value1;key2 = value2;key3 = value3....
Iată un exemplu de cum să recuperaț i cookie-urile.

Acest lucru produce următorul rezultat pentru cookie-urile setate de scriptul de mai sus -

User ID = XYZ
Password = XYZ123
File Upload:
Pentru a încărca un fiș ier, formularul HTML trebuie să aibă atributul enctype setat la multipart/form-data.

Tag-ul de input cu tipul de fiș ier creează un buton "Răsfoieș te".


Iată scriptul save_file.py pentru a gestiona încărcarea fiș ierelor -
Câmpuri cu valori multiple:

cum să procesăm câmpurile cu valori multiple.


când ai un set de casete de selectare care permit utilizatorului să aleagă din diverse opț iuni.

Fiecare dintre casetele de selectare este etichetată cu acelaș i nume de câmp, dar pentru a le diferenț ia,

fiecare va avea o valoare diferită asociată cu o anumită casetă de selectare.

Aș a cum ș tiț i, datele de la utilizator sunt trimise serverului sub formă de perechi cheie-valoare în timpul

trimiterea formularului.

Când mai multe casete de selecț ie sunt trimise, vei avea valori multiple
asociate cu aceeaș i cheie. În aceste cazuri, mai degrabă decât a fi dat un singur
Instanț ă MiniFieldStorage pentru datele tale, modulul cgi va crea o listă de astfel de
instanț ele pe care le vei itera pentru a obț ine valorile diferite.
Servere Web (HTTP):
Un server web HTTP nu este nimic altceva decât un proces care rulează pe masina ta ș i face
exactly două lucruri:
1- Ascultă pentru cererile http de intrare pe o adresă specifică a socket-ului TCP (adresă IP

ș i un număr de port)
Procesează această solicitare ș i trimite un răspuns înapoi utilizatorului.

Crearea serverelor web în Python:


În Python 2, pentru a crea un server web, este nevoie de un server de bază ș i de un "handler".

Serverul de bază (Web) este un element tip boilerplate, un must-have. Rolul său este de a efectua

comunicarea HTTP necesară între client ș i server.


Clasa de bază a serverului este (în mod corespunzător) numită HTTPServer ș i se găse ș te în

Modul BaseHTTPServer.
Handlerul este piesa de software care se ocupă de majoritatea "servirii web."
Procesează cererea clientului ș i returnează fiș ierul corespunzător, fie el static sau
generat dinamic de CGI.
Complexitatea handler-ului determină complexitatea serverului tău web.
Biblioteca standard Python oferă trei handleri diferiț i:

1. BaseHTTPRequestHandler se găse ș te în modulul BaseHTTPServer, împreună cu

serverul Web thebase.

2. SimpleHTTPRequestHandler, disponibil în modulul SimpleHTTP-Server,

se bazează pe BaseHTTPRequestHandler implementând standardul GET ș i

HEADrequests.

3. În cele din urmă, avem CGIHTTPRequestHandler, disponibil în CGIHTTPServer

modul, care ia SimpleHTTPRequestHandler ș i adaugă suport pentru POST

solicită. Are capacitatea de a apela scripturi CGI pentru a efectua procesarea solicitată ș i

poate trimite HTML-ul generat înapoi clientului.


Module ș i Clase ale Serverului Web:

Modul Description

BaseHTTPServer Furnizează clasele de server Web de bază ș i clasele de handler de bază.

HTTPServer ș i BaseHTTPRequestHandler, respectiv.

2. SimpleHTTPServer Conț ine clasa SimpleHTTPRequestHandler pentru a realiza


Solicitările GET ș i HEAD.

3. CGIHTTPServer Conț ine clasa CGIHTTPRequestHandler pentru a procesa


Cereri POST ș i executarea CGI
Pentru a crea un server web în Python 3, va trebui să importaț i două
module: [Link] ș i socketserver.

În Python 2, a existat un modul numit SimpleHTTPServer. Acest modul a fost


fuzionat în [Link] în Python 3.

Am menț ionat mai devreme, un server web este un proces care ascultă cererile de intrare pe
adresa TCP specifică. Adresa TCP este identificată printr-o adresă IP ș i un număr de port.

În al doilea rând, un server web trebuie să fie instruit cum să gestioneze cererile de intrare.

Aceste cereri Incoming sunt gestionate de gestionari speciali. Poț i să te gândeș ti la un web

server ca un dispatcher, o cerere soseste, serverul http inspectează cererea ș i


îl trimite unui handler desemnat.
Ex: Crearea unui server web
import [Link]
import socketserver
PORT = 8080
Handler = [Link]
cu [Link](("", PORT), Handler) ca httpd:
se serveș te pe portul
httpd.serve_forever()

[Link] este: un handler simplu pentru cererile HTTP care


serveș te fiș iere din directorul curent ș i din oricare dintre subdirectoarele sale.

[Link]: O instanț ă a TCPServer descrie un server care


foloseș te protocolul TCP pentru a trimite ș i a primi mesaje.
Pentru a instanț ia un server TCP, avem nevoie de două lucruri:

1- Adresa TCP (adresă IP ș i un număr de port)


2- Manipulatorul
[Link]("",

Adresa TCP este trecută ca un tuplu de (adresa IP, numărul de port)


Transmitem un ș ir gol ca adresă IP, ceea ce înseamnă că serverul va asculta
pe orice interfaț ă de reț ea (toate adresele IP disponibile).
Handler este [Link]

PORT stochează valoarea 8080, apoi serverul va asculta cererile incoming pe


portul acela.

Serve_forever este o metodă pe instanț a TCPServer care porneș te serverul ș i începe


ascultând ș i răspunzând la cererile primite.
salvează acest fiș ier ca [Link] în aceeaș i direcț ie ca [Link]
<html>
<head>
<title>Python is awesome!</title>
</head>
<body>
<h1>Afternerd</h1>
<p>Felicitări! Serverul HTTP funcț ionează!</p>
</body>
</html>
În acel director, porniț i serverul web:
$ python [Link]
servind pe portul 8080
Acum avem un server HTTP care ascultă pe orice interfaț ă pe portul 8080 aș teptând pentru
cereri http în curs de desfăș urare.

Deschideț i browserul ș i tastaț i localhost:8080 în bara de adrese.

S-ar putea să vă placă și