background preloader

Django

Facebook Twitter

Django Packages : Django Packages reusable apps, sites and tools directory. Optimiser ses applications Django — bruno.im. Prenons un exemple simple.

Optimiser ses applications Django — bruno.im

Supposons que vous avez ce modèle de données : class Article(models.Model): author = models.ForeignKey(User) title = models.CharField(max_length=255) Dans vos vues vous récupérez une liste d'articles : articles = Article.objects.all() Et dans les templates, vous affichez cette liste d'articles : {% for article in articles %} <h1>{{ article.title }}</h1><p>{{ article.content }}</p><p>{{ article.author.get_full_name }}</p>{% endfor %} Et là, on remarque qu'à chaque itération, une requête SQL supplémentaire est exécutée pour récupérer l'auteur de chaque article dans la base de données. Le problème vient du fait que Django a commencé par faire une requête SELECT sur les champs du modèle Article mais sans faire de jointure sur les tables voisines. Articles = Article.objects.select_related('author') Le fonctionnement de select_related() est intéressant. C'est un select_related() différent, celui-ci effectue deux requêtes mais pas de jointure.

Rafistolage de modèle tiers. Posté par: thomas il y a 1 an, 9 mois Oh bon dieu, deux mois ont été volés de ma vie.

Rafistolage de modèle tiers

Je revois défiler ma jeunesse avec mélancolie, lorsque je courais dans les champs, les cheveux au vent, et nous étions tous si heureux. Bref, diablo 3 est passé là, j'ai été happé dans son vortex temporel, je ne me suis extirpé que récemment, et tout cela me fait une belle excuse pour mon odieuse absence d'article depuis tout ce temps. Trêve de galéjades, il est temps de vous parler un peu django, avec aujourd'hui : le rafistolage de modèle tiers bancal. Ou comment modifier adroitement la définition de certains champs d'une application externe pour qu'ils s'adaptent à votre projet. Django est livré avec une application optionnelle bien pratique pour gérer les utilisateurs et leur authentification (django.contrib.auth).

La solution est toute simple, il suffit d'aller délicatement modifier la définition du champ en passant par le champ _meta du modèle cible. Ressources python & django. Django Un peu daté, mais ça permet d'aller au delà du tuto de base : comprendre les staticfiles (über simple, mal expliqué dans la doc) (CBV) Cheatsheet: Books : Django 1.1 Testing and Debugging Pro Django The Definitive Guide to Django: Web Development Done Right (V2) Qq conseils Prendre l'habitude de tester des trucs dans le django shell, ou mieux dans celui fourni par django extensions (cf plus bas) qui importe tous les modèles Utiliser un éditeur qui permet de sauter rapidement dans le code source d'un module importé (j'utilise pycharm, mais y'en a d'autres) Tester son code ( Apprendre postgresql: pour utiliser geodjango c'est incontournable, et puis c'est mieux.

Ressources python & django

App django incontournables: (recherche) (compression css, js etc) (forms)