Prezentare
Definirea variabilelor
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type=”text/javascript”>
var a = 1;
a = “string cu doua ghilimele”;
a = 'string cu apostroafe';
a = 2.3;
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type=”text/javascript”>
if(true) {
alert('ramura de adevar');
}
else if(undefined) {
alert('ramura elseif');
}
else {
alert('ramura else');
}
switch(variabila) {
case true:
alert('cazul de adevar');
break;
default:
alert('nicio ramura nu a fost acoperita');
</script>
</body>
</html>
În cazul celui de al doilea exemplu, în care folosim structura switch, vom apela funcția
alert pasându-i ca și argument stringul 'cazul de adevar', atunci cand fluxul de
executie se afla in cazul in care valoarea variabilei variabila este true.
Structuri repetitive
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type=”text/javascript”>
do {
alert(i);
i++;
} while(i < 10);
while(i > 8) {
alert(i);
i--;
}
Bucla do/while va rula pana cand valoarea varieabilei i va fi mai mare decat 10, la
fiecare iterație se afișează valoarea variabilei i și se incrementează cu o unitate.
Bucla while va rula pană când valoarea ei va fi mai mica de 8, la fiecare iterație a
buclei se va afișa valoarea variabilei prin intermediul functiei alert, iar valoarea
variabilei i va fi decrementată cu o unitate.
Bucla for va rula până când valoarea variabilei i va fi mai mare de 20, la fiecare iterație
a buclei valoarea variabilei va fi incrementata cu o unitate, iar valoarea acesteia va fi
afișată într-o căsuța de dialog prin intermediul funcției alert.
Definirea functiilor
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type=”text/javascript”>
function f() {
alert('f');
}
var g = function() {
alert('g');
}
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type=”text/javascript”>
$(document).ready(function() {
$('#paragraf').append('text');
});
</script>
<div>
<p id=”paragraf”> </p>
</div>
</body>
</html>
Tratarea evenimentelor
In exemplul de mai jos voi afisa o casuta de dialog de fiecare data cand se face click
pe un buton ce are atributul class egal cu “buton”.
<!DOCTYPE html>
<html>
<head></head>
<body>
<script type=”text/javascript”>
$('.buton').click(function() {
alert('ati apasat butonul');
});
</script>
<div>
<button type=”button” class=”buton”> Buton </button>
</div>
</body>
</html>
Structuri de date
Python oferă tipuri tradiționale de date, cum ar fi numărul întreg (integer, int) sau cel
rațional (float), dar introduce totodată și concepte noi.
Stil
În C un astfel de blocuri sunt deseori desemnte prin acolade, {<cod>}, dar în Python
nu este nevoie de astfel de construcții. Nivelele de indentare îndeplinesc această
funcție. Această importanță a indentării este foarte suprinzătoare pentru mulți
utilizatori noi ai limbajului Python chiar dacă sunt programatori cu experiență. Dar o
astfel de utilizare a indentării permite codului să fie mai ușor de citit și mai compact.
Programatorii cu experiență vor indenta implicit codul sursă, oricare ar fi limbajul,
fiindcă astfel se permite structurarea codului sursă și evidențierea funcționalității.
Python face din această deprindere folositoare în acest sens o cerință strictă.
Biblioteci și Extindere
Din acest motiv Python include bibioteci pentru lucrul cu fișiere, arhive, fișiere XML
și un set de biblioteci pentru lucrul cu rețeaua și principalele protocoale de comunicare
pe internet (HTTP, Telnet, FTP). Un număr mare de platforme Web sunt construite cu
Python. Abilitățile limbajului ca limbaj pentru programarea CGI sunt în afara oricăror
dubii. De exemplu YouTube, unul din site-urile cu cea mai amplă cantitate de trafic din
lume, este construit pe baza limbajului Python.
app = Flask(__name__)
Din exemplul prezentat mai sus putem observa ca ruta utilizator contine in URL o
variabila de tip integer ce semnifica id-ul utilizatorului. De asemenea, puteam observa
ca metodele aferente acestei rute sunt GET si POST. In mod standard, fiecare ruta
permite accesul doar prin metoda GET, folosirea metodei post este necesara decat dacă
dorim sa procesăm un formular.
II.6.3 Administrarea bazelor de date cu SQLAlchemy
SQLAlchemy este un ORM(Object Relational Mapper) ce permite efectuarea de interogări
fara a mai scrie cod SQL. Folosind SQLAlchemy se va crea o relatie intre baza de date si
modul in care sunt reprezentate atributele clasei ce mosteneste clasa pusa la dispozitie de
SQLAlchemy.
Pentru a defini câmpurile unui tabel vom inițializa fiecare atribut al clasei ce moștenește clasa
db.Model cu instanțe ale clasei db.Column. class Utilizator(db.Model)
id = db.Column(db.Integer, primary_key=True)
self.nume = nume
self.prenume = prenume
self.parola = parola
După cum se poate vedea, definim o clasa denumita Utilizator ce moștenește clasa
db.Model. Clasa Utilizator contine urmatoarele atribute: id – contine o instanta a clasei
db.Column create pentru un câmp de tip întreg ce este și cheie primară, nume – ce contine o
instanță a clasei db.Column inițializată pentru un camp de tip string a cărui valoare nu poate fi
nulă, prenume - ce conține o instanța a clasei db.Column inițializată pentru un camp de tip
string ce nu poate conține o valoare nulă, parola – conține o instanță a clasei db.Column
inițializată pentru un element de tip string ce nu poate conține o valoare nula.
Executarea interogarilor
Avand in vedere faptul ca clasele ce moștenesc clasa db.Model sunt reprezentarile tabelelor
din baza de date, acestea conțin și metode speciale folosite pentru a efectua interogari.
Urmatorul exemplu ilustreaza conceptele explicate mai sus Exemplul următor demonstreaza
cele mai frecvent utilizate meode pentru efectuarea unei interogări:
utilizatori = Utilizator.query.all()
george = Utilizator.query.filter_by(name='geroge').first()
utilizatorul1 = Utilizator.query.get(1)
În primul exemplu atribuim variabilei utilizatori o lista ce va conție toate obiectele de tip
Utilizator din baza de date.
Pentru a adăuga informații noi în baza de date va trebui sa adăugam obiectul modificat sau
nou creat in sesiunea pusa la dispozitie de SQLALchemy dupa ce am terminat de adaugat
elementele noi sau modificate în sesiune va trebui sa confirmăm schimbarea.
db.session.add(utilizator)
db.session.commit()