Show Menu
Cheatography

Django - M1 Info - GL Cheat Sheet (DRAFT) by

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Instal­lation

C'est quoi, Django?

Django est un framework Web. Parce que Django a été développé dans un enviro­nnement journa­lis­tique évoluant très rapide­ment, il a été conçu pour rendre le dévelo­ppement Web rapide et facile.
Son slogan en est la preuve : "­­Dj­ango: The Web framework for perfec­­ti­o­nists with deadli­­ne­s­" .
Django s'inspire fortement de l'arch­­it­e­cture MVC. On dit que Django est en MTV pour Modèles, Templates et Vues.
Django se compose de modules appelés "­­ap­p­l­ic­­ati­­on­s­" qui peuvent être inclus ou retirés facile­­ment. Grossi­­èr­ement , dans un site conçu avec Django, la gestion des utilis­­ateurs est une app et la chatbox en est une autre.
Django est open source, distribué sous licence BSD 3-clauses et developpé et maintenu par la Django Software Founda­­tion.

Déploi­ement :

Attention : Django fournit un serveur web très simple pour déboguer et tester rapide­ment. Il ne doit jamais être utilisé en production car il n'a jamais passé d'audit de sécurité et ne supportera pas la charge de plusieurs utilis­ateurs.
git clone votrep­rojet
cd votrep­rojet
./mana­ge.py check --deploy
./mana­ge.py migrate
./mana­ge.py create­sup­eruser
Configurer le fichier WSGI
lancer votre serveur en prod (apache, nginx etc...)
et se rendre à la page d'acceuil de votre site !

Avantages et Incové­nients :

Accès à la librairie standard Python.
Pas d'AJAX.
Dévelo­ppement simple, efficace et rapide.
ORM capric­ieuse.
Interface d’Admi­nis­tration et autres générés automa­tiq­uement à partir des modèles.
Evolution lente.
Déboguage et tests.
Communauté et Docume­nta­tion.
 

Modèles :

Le modèle est la seule et unique source d'info­rmation concernant les données. Il contient les attributs et le compor­tement des données stockées.
Chaque modèle correspond à une seule table dans la base de données.
Chaque modèle est une classe Python qui dérive de django.db.mo­­de­l­s.M­­odel.
Chaque attribut du modèle représente une colonne de la table.
Avec tout ça, une API d'accès aux données est automa­­ti­q­u­ement générée par le cadre compatible CRUD. Inutile d'écrire des requêtes SQL associées à des formul­­aires, elles sont générées automa­­ti­q­u­ement par l'ORM.

Modèle exemples :

Dans cet exemple on définit le modèle Personne avec son prénom et son nom de famille

from django.db import models

class Person­ne(­mod­els.Mo­del):
prenom= models.Ch­arF­iel­d(m­ax_­len­gth=30)
nomdef­amille= models.Ch­arF­iel­d(m­ax_­len­gth=30)

Le modèle définit au-dessus créera une table de ce style:

CREATE TABLE myapp_­per­sonne (
"­id" SERIAL NOT NULL PRIMARY KEY,
"­pre­nom­" VARCHA­R(30) NOT NULL,
"nom de famill­e" VARCHA­R(30) NOT NULL
);

Les fonctions qui agissent sur le modèle doivent se trouver avec le modèle dans models.py:

def person­ne_­age­e(s­elf):
"­Ret­ourne un indicateur de vieill­ess­e."
import datetime
if self.b­irt­h_date < dateti­me.d­at­e(1945, 8, 1):
return "­salut l'anti­qui­té"
else:
return "­salut la jeunes­se"

Templates:

Etant un framework Web, Django a besoin d'une méthode pratique pour générer du HTML dynami­que­ment. La solution la plus commune pour ce faire viennent de l'util­isation des templates.
Un template contient les parties statiques de la sortie HTML désirée mais aussi d'autres lignes suivant une syntaxe spécifique décrivant comment le contenu dynamique sera inséré.
Un projet Django peut être configuré avec une ou plusieurs moteurs de template.
Par défaut, Django utilise son propre système suivant le Django Template Language (DTL).
Un template Django est donc un fichier qui contient du texte répondant à une certaine syntaxe.
Par convention on les place dans le dossier mon_ap­p/t­emp­lat­es/­mon_app

Template exemples :

Variables {{ a }}

Une variable a pour sortie la valeur du contexte qui est un dictio­nnaire liant un ou plusieurs couples clef-v­aleur.

Mon prénom est {{ prenom }}.


Tags {% a %}

{% csrf_token %}


Filtres {{ a|filtre }}

{{ django­|title }}


Avec {'django': 'the web framework for perfec­tio­nists with
deadli­nes'}, cette template affiche:

The Web Framework For Perfec­tio­nists With Deadlines
-> la première lettre de chaque mot devient une majuscule

Un commen­taire ressemble à ça :
{# ça ne sera pas affiché à l'écran #}

Vues :

Une fonction de vue, ou une vue pour faire court, est simplement une fonction Python qui prend une requête Web et retourne une réponse Web.
Cette réponse peut être le contenu HTML d'une page,une redire­­ction, une erreur 404, un document XML, une image etc...
La vue contient donc la logique nécessaire pour retourner cette réponse. Par conven­­tion, on mettra les vues dans le fichier views.py .

Vue exemple :

Voilà une vue qui retourne la date et le temps actuel sous forme d'un document HTML :

from django.http import HttpRe­sponse
import datetime

def curren­t_d­ate­tim­e(r­equ­est):
now = dateti­me.d­at­eti­me.n­ow()
html = "­<ht­ml>­<bo­dy>It is now %s.</b­ody­></­htm­l>" % now
return HttpRe­spo­nse­(html)

Routage (URL Dispat­cher) :

Routage du projet vers l'app
mon_pr­oje­t/m­on_­pro­jet­/ur­ls.py
#Include mon_pr­oje­t/m­on_­app­/ur­ls.py urlpat­terns = patter­ns('', url(r'­^ma­inA­pp/', includ­e('­mai­nAp­p.u­rls­')),)
Routage de l'app vers la vue
mon_pr­oje­t/m­on_­app­/ur­ls.py
from django.co­nf.urls import url, patterns from mainApp import views  urlpat­terns = patter­ns('', url(r'^$', views.i­ndex, name='­ind­ex'),)

Ressources :