0% au considerat acest document util (0 voturi)
23 vizualizări

Python102 Curs3

Încărcat de

Duta Cosmin
Drepturi de autor
© © All Rights Reserved
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
23 vizualizări

Python102 Curs3

Încărcat de

Duta Cosmin
Drepturi de autor
© © All Rights Reserved
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 43

Python 102

Curs 3 - Introducere în Django


09.03.2021
Despre Hackademy
● Cursuri: CCNA, Python 101, Web 101.
● Evenimente:
AWG LAN-party

ACADNET

IOIOI IOIOI

Hackademy Treasure Hunt


Despre echipă
Instructori:
Pavel Mateescu Radu Minea

Responsabili laboratoare:
Mara Nicolae Diana Duțică

Infrastructură:
Laurențiu Olteanu Răzvan Matișan

Interni:
Radu Chivereanu Horia Ignat
Despre voi
De ce ați ales acest curs?
Ce pasiuni aveți?
Despre curs
Pentru început...
● 📚 Zoom + Discord
○ Curs
○ Materiale și anunțuri
● 🕐 Marți, ora 18:00 - 21:00
○ Quiz de recapitulare din cursul precedent
○ Curs + Demo
○ Laborator
● 󰢧 Puneți întrebări oricând
● 👀 Feedback la fiecare curs
Calendarul cursului
Nr. curs Titlu Săptămână
1 Introducere în Python 09.03.2021

2 Funcții și colecții 16.03.2021

3 Programare orientată pe obiecte 23.03.2021

4 Module 30.03.2021

5 Jocuri în Python 06.04.2021

6 Recapitulare prin colaborare 13.04.2021

7 Examen 20.04.2021

7’ Workshop Pitch-uri 27.04.2021

8 Prezentarea Proiectelor 04.05.2021


Punctaj
● Parcurs - 2p + 1p bonus
○ Laboratoare - 2p
■ Submission până sâmbătă 23:55:00
○ Quiz Bonus - 1p
● Proiect - 4p
○ Prezentare - 2p
○ Calitatea codului - 1p
○ Demo - 1p
● Examen - 4p + 1p bonus
○ Hackerrank

Minimum 7p pentru promovarea cursului.


Introducere în
Django
Ce au toate in comun?
Ce este Django?

Django makes it easier to build better web apps


more quickly and with less code.

Fast, loaded, secure, versatile and highly scalable


Web framework
Ce este un framework?
Un framework este un set complex de
functionalitati care pot fi configurate
selectiv si care ofera scalabilitate rapida.

Un dezvoltator se foloseste de un
framework pentru crearea rapida de aplicatii
folosidu-se de patter-urile oferite.

Ele pot fi rescrise sau suprascrise cu


functionalitati noi in functie de necesitati.
Imagine cu un blueprint cu functionalitati
dintr-un framework
Ce tipuri de framework-uri
exista?
Frontend:
● React
● React Native
● Angular

Backend:
● Django
● Spring
● NodeJS
Backend
Toata logica din spatele unei aplicatii mobile
sau web

Se foloseste acelas backend pentru ambele


tipuri de aplicatii

El este cod care ruleaza continuu pe un


server, primeste interograri si returneaza
raspunsuri
Cum functioneaza un
Backend
1. Baza de date
a. Low level data manipulation:
i. Insertion
ii. Updates
iii. Deletion
2. Framework
a. DB Querys
b. Link routing
3. API:
a. Endpoints logic
Django MVT
Model View Template

● Model - abstractizare la tabela din DB


● View - executa logica si interactioneaza
cu un Model pentru a prelucra date.
Randeaza un Template
● Template - Un strat de prezentare folosit
pentru interfata cu utilizatorul
Django ORM
● Abstractizare peste stratul de baza de
date

● Cod Python care genereaza cod SQL


Admin page
Django ofera o pagina de admin configurabila

Contine actiuni definite de dezvoltator care


sunt folosite de un administrator asupra
unor tabele din DB, fara a avea acces in mod
direct la DB
Structura unui proiect
settings.py
Fisier de configuratii pentru server:

● Applicatii
● Tipul bazei de date
● Rute de sistem
● Variabile de environment
urls.py
Fisier pentru rute

● Leaga un url de un view

Exemplu:
`url(r'^extract/$', views.extract, name='extract')`
● - ruta
● - view-ul apelat
● - numele rutei
manage.py
Un script folosit pentru a interactiona cu un
proiect in Django

Ex:
`python manage.py runserver 0:8080`
`python manage.py shell`
`python manage.py makemigrations`
`python manage.py migrate`
virtual_env/
Un environment de Python izolat de altele
sau de versiunea de system impreuna cu
bibliotecile instalate

More here
Frontend din django
● Se folosesc template-uri, sunt compuse
din fisiere:
○ Html
○ CSS
○ JS

● Se pot folosi pentru pagini web, pentru


content din cadrul unui email, etc.
templates/
● Director ce contine fisiere .html

● Contin Template tags

● Structura:
templates
├──accounts
│ ├──signup.html
│ └──profile.html
└──configurator
├──configurator.html
└──listings.html
static/
● Director ce contine fisiere statice: imagini,
sripturi de JavaScript, fisiere de design CSS
● Structura:
static
├──accounts
│ ├──avatar.png
│ ├──script.js
│ └──profile.css
├──configurator
│ ├──logo.png
│ ├──script.js
│ └──configurator.css
└──logo.png
media/
● Director ce contine fisiere incarcate prin
serviciu de upload
● In mediu de productie mari se folosesc
servicii de stocare (Blob Storage)
● Structura:
templates
├──accounts
│ ├──user1_avatar.png
│ └──user2_avatar.png
└──configurator
├──audi.png
└──audi_ jgksfa7tbkrb27f.png
apps/
Un proiect Django contine mai multe aplicatii.

`python manage.py startapp <app_name>`

O aplicatie dintr-un proiect contine fisiere cu cod


strict folosit in cadrul ei precum:
● views.py
● models.py
● admin.py

Mai multe detalii aici.


views.py
Logica apelata cand se face un request pe un link
setat in urls.py
{% for brand in brands %}
def brand_table(request):
<div class="card">
template_name = 'configurator/configurator.html'
<h5 class="card-title">{{ brand.name }}</h5>
brands = Carbrand.objects.all()
<img class="card-img-top" src="{{ brand.logo.url }}">
context = {'brands' : brands}
</div>
return render(request, template_name, context)
{% endfor %}

templates/configurator/configurator.py
apps/configurator/views.py

Returneaza un obiect de tip render care contine:


● request-ul facut
● path-ul pana la template-ul care trebuie randat
● context-ul, adica obiecte si atribute care pot fi
folosite cu template tags
models.py
Fiecare clasa reprezinta o tabela din baza de
date.
Tipuri de campuri:
● CharField() class Carbrand(models.Model):
name = models.CharField(max_length=50, default='Audi')

● DateField() logo = models.ImageField(upload_to="configurator/brands")

● IntegerField() def __str__(self):


return self.name

● EmailField()
● FileField()
Mai multe aici
models.py
Campuri relationale:
● Many-to-one:
○ ForeignKey()
● Many-to-many:
○ ManyToManyField()

O diagrama buna cu relatii intre tabele


admin.py
Aici se definesc actiuni care pot fi folosite in pagina
de admin

Un exemplu de clasa cu o actiune

O pagina a unei actiuni se foloseste de un template


care este definit de dezvoltator

Actiunile si modelele trebuie inregistrate in pagina


de admin:
admin.site.register(Carbrand)
Pauză?
Întrebări?
Development setup
1. Facem un venv
2. Facem un proiect Django
3. Facem structura de directoare
4. Facem o aplicatie
5. Actualizam setarile

Folosim:
● https://yts.mx/api pentru lista de filme
● https://webtorrent.io/ pentru streaming
Demo

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