PJBlog : Pierre-Jean, WinLibre et Cie...

Pierre-Jean Coudert - Logiciels Libres - Développement - etc...

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, juin 22 2011

Nettoyer / Supprimer / Remettre à zéro les migrations de South

Cette note est un aide-mémoire personnel.

Au cours de l avie d'un développement Django, Il est souvent souhaitable de remttre à zéro les migrations gérées par South.

Voici la liste des commandes à lancer (ici avec linux).

./manage.py reset south
rm -r appname/migrations/
./manage.py convert_to_south appname

Attention, la commande "reset south" supprime les enregistrement des migrations pour toutes les applications. Il faut donc effectuer les deux autres commandes sur l'ensemble des applications

lundi, janvier 3 2011

Astuce Django : Trier un Queryset après l'avoir slicé

Il est impossible de trier un queryset après en avoir extrait une tranche (slice).

Une solution simple consiste à utiliser la fonction python sorted associée à une lambda fonction pour la clé de tri :

model_unordered = Model.objects.all().order_by('-pub_date')[:100]
model_ordered= sorted(model_unordered, key=lambda obj: unicode(obj.textfield))

jeudi, novembre 4 2010

Fuites de mémoire avec Django

Je viens de trouver !

Une commande Django pour manage.py qui effectue une mise à jour complète d'une base de donnée, avait une occupation mémoire gigantesque. Après un debug intensif et de nombreux tests, impossible de comprendre ce qui clochait dans mon code.

C'est ce post qui m'a mis sur la voie : en mode DEBUG= True, Django mémorise l'ensemble des requêtes sur la base de donnée pendant la requête HTTP en cours... Mais il n'y a pas de requête HTTP pendant l'exécution de manage.py, donc tous mes appels à la base sont mémorisés par Django et encombrent la mémoire !

Il y a donc deux solutions à ce problème :

  1. positionner DEBUG= FALSE
  2. faire appel à db.reset_queries() régulièrement pour vider cette liste de requêtes. ( from django import db )

lundi, mars 30 2009

10 liens indispensables, en français, pour bien développer avec Django

Le camp de base

  • Django-fr : Pour commencer, LE site sur Django pour les francophones

Apprendre

Documentation et Référence

Bonne pratiques

Installer Django sur un serveur

Réutiliser des application existantes

Et pour finir, un site anglophone mais non des moindres

  • Django snippets : Le recueil de tous les extraits de codes utiles dont vous pourrez avoir besoin lors d'un développement Django.

jeudi, février 19 2009

Ecoles de ski, Django, Fixtures et champs ManyToMany...

Après avoir galéré sur les fixtures django sur les champs ManyToMany, j'ai pu mettre en ligne la mise à jour de la base de données de Resaski.

Voici un modèle simplifié :

class Language(models.Model):
  code = models.SlugField(primary_key=True, max_length=10)
  name = models.CharField(max_length=200)

class School(models.Model):
  slug = models.SlugField(primary_key=True, max_length=200)
  languages = models.ManyToManyField(Language)

et un ensemble de fixtures json associé :

[
 {"model": "myapp.language",
  "pk":"fr",
  "fields":{"name": "Français","code": "fr"}
 },
 {"model": "myapp.language",
  "pk":"en",
  "fields":{"name": "Anglais","code": "en"}
 },
 {"model": "myapp.School",
  "pk":"ecole-1",
  "fields":{"slug":"ecole-1", "languages":[fr]}
 },
 {"model": "myapp.School",
  "pk":"ecole-2",
  "fields":{"slug":"ecole-2", "languages":["fr","en"]}
 }
]

L'ensemble des stations et des écoles de ski à été mis à jour, notamment  : Ecole de ski Tourmalet Risoul Le Grand Bornand Morzine Saint Gervais La Rosière Les Carroz d'Arraches Valloire Contamines Montjoie Les Gets Vars - Crevoux Valmorel Serre Chevalier Samoëns Châtel Megève Vos cours de snowboard à La Clusaz Les Saisies Les Menuires Val d'Isère Alpe d'Huez Vos cours de ski sur Avoriaz Les Deux Alpes Meribel La Plagne Ecole de ski Courchevel Chamonix Les Arcs Val Thorens Les écoles de ski à Tignes

jeudi, juin 14 2007

Pwytter : un client Twitter en Python

En 200 lignes de python j'ai écrit ce petit client Twitter ce soir.

Je vais essayer de l'améliorer un peu, puis je rendrai le code disponible sous une licence libre.

mardi, juin 5 2007

Tutoriel : Installation de Django sous Windows

Vous voulez gouter aux joies du développement web en Python avec un des meilleurs Framework actuel ?

Voici un petit tutoriel en pas à pas pour installer Django sur votre PC sous Windows:

  1. Télécharger et installer Python
  2. Télécharger et installer Tortoise SVN
  3. Créer un dossier "django" où bon vous semble et récupérer la dernière version du code Django depuis le serveur Subversion :
    • cliquer avec le bouton droit sur votre dossier "django"
    • choisissez "SVN checkout..."
    • Copier l'adresse "http://code.djangoproject.com/svn/django/trunk/" dans le champ "URL of repository:"
    • Valider pour charger la dernière version du code django
  4. Modifier la variable d'environnement "Path" :
    • Aller dans le panneau de configuration
    • cliquer sur l'icone "Système"
    • dans l'onglet "Avancé" cliquer le bouton "Variables d'environnement"
    • dans la boite double cliquer sur la variable "Path"
    • ajouter ;C:\Python25;C:\Python25\Lib\site-packages\django\bin à la valeur de la variable
  5. Nous allons maintenant installer django
    • ouvrir une ligne de commande "Menu Démarrer > Accessoires > Ligne de Commande"
    • taper "cd vers_votre_repertoire\django"
    • taper "python setup.py install"
    • django est installé
  6. Installer Mysql
  7. Installer mysql-python

Tout est maintenant installé !

Vous pouvez commencer à vous amuser : http://www.djangoproject.com/documentation/

Les liens indispensables

vendredi, février 2 2007

Mon environnement de developpement Python

Après quelques mois de recherche et de test pour trouver mon environnement idéal afin de développer mes projets en Python...

Voici mes choix actuels :