0% au considerat acest document util (0 voturi)
5 vizualizări43 pagini

Python102 Curs3

Încărcat de

Duta Cosmin
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)
5 vizualizări43 pagini

Python102 Curs3

Încărcat de

Duta Cosmin
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

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
[Link]
Fisier de configuratii pentru server:

● Applicatii
● Tipul bazei de date
● Rute de sistem
● Variabile de environment
[Link]
Fisier pentru rute

● Leaga un url de un view

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

Ex:
`python [Link] runserver 0:8080`
`python [Link] shell`
`python [Link] makemigrations`
`python [Link] 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
│ ├──[Link]
│ └──profi[Link]
└──configurator
├──confi[Link]
└──[Link]
static/
● Director ce contine fisiere statice: imagini,
sripturi de JavaScript, fisiere de design CSS
● Structura:
static
├──accounts
│ ├──[Link]
│ ├──[Link]
│ └──profi[Link]
├──configurator
│ ├──[Link]
│ ├──[Link]
│ └──confi[Link]
└──[Link]
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
├──[Link]
└──audi_ [Link]
apps/
Un proiect Django contine mai multe aplicatii.

`python [Link] startapp <app_name>`

O aplicatie dintr-un proiect contine fisiere cu cod


strict folosit in cadrul ei precum:
● [Link]
● [Link]
● [Link]

Mai multe detalii aici.


[Link]
Logica apelata cand se face un request pe un link
setat in [Link]
{% for brand in brands %}
def brand_table(request):
<div class="card">
template_name = 'configurator/[Link]'
<h5 class="card-title">{{ [Link] }}</h5>
brands = [Link]()
<img class="card-img-top" src="{{ [Link] }}">
context = {'brands' : brands}
</div>
return render(request, template_name, context)
{% endfor %}

templates/configurator/[Link]
apps/configurator/[Link]

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
[Link]
Fiecare clasa reprezinta o tabela din baza de
date.
Tipuri de campuri:
● CharField() class Carbrand([Link]):
name = [Link](max_length=50, default='Audi')

● DateField() logo = [Link](upload_to="configurator/brands")

● IntegerField() def __str__(self):


return [Link]

● EmailField()
● FileField()
Mai multe aici
[Link]
Campuri relationale:
● Many-to-one:
○ ForeignKey()
● Many-to-many:
○ ManyToManyField()

O diagrama buna cu relatii intre tabele


[Link]
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:
[Link](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:
● [Link] pentru lista de filme
● [Link] pentru streaming
Demo

Common questions

Dezvoltat cu IA

The manage.py script is used to interact with Django projects. It provides several commands like `runserver` to start a development server, `shell` for an interactive Python shell session in a Django environment, `makemigrations` for creating new migrations based on the changes detected to the models, and `migrate` for applying and unapplying migrations .

Django's ORM allows interaction with a database through Python code instead of SQL, providing an abstraction layer over databases. It enables developers to perform queries, insertions, updates, and deletions using model instances . This abstraction simplifies database interactions, minimizes potential SQL injection risks, and promotes database-agnostic application code, enhancing portability and maintainability .

Setting up a development environment for a Django project involves several steps: creating a Python virtual environment (`venv`), initializing a Django project, structuring directories (for templates, static files, and media), creating applications using `manage.py startapp`, and updating settings in `settings.py` . Additionally, developers may integrate APIs like those from `https://yts.mx` for data sourcing and prepare for production using external storage services for media files .

Relational fields in Django models define relationships between database tables. A `ForeignKey` establishes a many-to-one relationship, linking one model to another model. A `ManyToManyField` creates many-to-many relationships between models. These fields enhance the interaction and querying capabilities of models. For example, a `ForeignKey` could link a `Carbrand` model to a `Car` model, defining which brand manufactures each car .

In a Django project, `settings.py` contains server configurations, including applications, database type, system routes, and environment variables. It is central to configuring the project's overall behavior and functionalities . In contrast, `urls.py` maps URL patterns to their corresponding views. It links paths to view functions, determining how requests are handled by the application, which is crucial for defining navigation and access points .

Django implements an architecture closely related to MVC, known as MVT (Model-View-Template). The Model acts as an abstraction of the database table. The View executes logic and interacts with the Model to process data, rendering it using a Template. The Template is a presentation layer used for the user interface .

Django's admin interface serves as a configurable backend environment allowing administrators to perform various actions on database tables without direct database access. Developers can customize this interface by defining actions and models in `admin.py` and registering them using `admin.site.register()` . This flexibility enables tailored administration tasks specific to a project's requirements.

In Django, template rendering occurs when a View function receives a request and processes data using Models. It then utilizes a specific HTML template file found in the `templates` directory to map data into user-friendly content through context variables. The template files can use template tags to iteratively include data attributes, resulting in a dynamic, rendered HTML file .

Django offers several advantages including fast development, a loaded framework with built-in functionalities, high security, versatility, and high scalability . The framework allows developers to build web applications more quickly and with less code because it comes with patterns that can be selectively configured and even rewritten if necessary .

Using a virtual environment for a Django project is beneficial because it creates an isolated Python environment, separated from system dependencies and other projects. This isolation ensures that the project uses specific versions of packages without conflicts, enhancing manageability and reproducibility across different environments .

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