---
# System prepended metadata

title: django
tags: [' python', cours, ' chewie', ' ing1']

---

---
tags: cours, python, chewie, ing1
date: 05/03/19
author: Robin Boucher
title: django
---

==Architecture de type classique:== architecture MVC
==Modèle MVC:== Modèle Vue Contrôleur

++Django:++
==Url dispatcher==: Inspects the request to invoke the appropriate response
==View==: Combines components to construct a response
==Model==: Fetches data from the database
==Template==: Returns an HTML page with holes to be filled with data

Une vue en Django, c'est une fonction qui reçoit une requête et qui renvoit une réponse (elle prend du HTML avec des trous et des données, les mixent et voilà)

Installer Django -> utiliser `pipenv install django`
Installer un paquet sur la machine et non dans un env -> `pip install --user`

==++Commandes Django:++==
`django-admin startproject <name_project> .`
==manage.py:== Super makefile, besoin d'une commande, c'est dans manage.py
==urls.py:== Table des matières des urls
Un projet c'est un sac d'applications
==settings.py:== Inclure les apps
Créer un fichier urls.py dans les dossiers des apps
Pour manipuler le SQL en python, on peut utiliser un ORM

```python
from django.db import models
class Prof(models.Model):
    name = models.CharField(max_length=200)
    
class Student(models.Model):
    name = models.CharField(max_length=200)
    prof = models.ForeignKey(Prof, on_delete=models.CASCADE)
```
==makemigrations:== comme commit (faire un snapshot -> faire une migration)
==migrate:== regarde les migrations et les applique

driver chrome en headless