Sep
9
2010
Un petit article Python de temps en temps ne fait pas de mal, donc ici je vais détailler la manière très simple d'utiliser les modèles Django pour créer des formulaires, mais aussi créer des sous-types de formulaire à partir du même modèle. Tout va s'expliquer :
Quand on créé un objet avec la couche de persistance de Django, on crée une nouvelle classe :
-
class User(models.Model):
-
username = models.CharField(max_length=255)
-
password = models.CharField(max_length=255)
-
email = models.EmailField(max_length=255)
-
blog = models.URLField(verify_exists=False)
-
created_at = models.DateTimeField(auto_now=True, auto_now_add=True)
-
-
def __unicode__(self):
-
return self.username
Cette classe permet de gérer automatiquement les données base de données, la DAO, et quelques validations. Maintenant il n'est pas rare de vouloir lier un formulaire à un tel objet, pour gérer de simple CRUD. Rien n'est plus simple avec Django où il suffit d'écrire le code suivant (toujours dans models.py) :
-
class UserForm(forms.ModelForm):
-
class Meta:
-
model = User
Ce code complexe permet non-seulement de gérer les champs associés à l'objet User, mais il possède aussi une interaction facilitée avec tous les objets persistants, voilà quelques exemples d'utilisations :
-
# loading object
-
aUser = User.objects.get(id=id);
-
# using it to create a bounded form to this object
-
aUserForm = UserForm(instance=aUser)
On peut aussi récupérer une instance de formulaire à partir d'un submit en utilisant la commande :
-
form = UserForm(request.POST)
-
if form.is_valid():
-
#etc.
Cette validation permet d'obtenir un objet clean avant la sauvegarde. Maintenant même si tout cela est très intéressant, ces informations sont présentes de bases dans la documentation officielle de Django, et je vais plutôt approfondir un point. Comment créer un formulaire à partir d'un modèle qui n'affiche pas tous les champs du modèle ?
Le système est prévu aussi pour ça, il permet de créer des sous-formulaires en sélectionnant les champs à afficher, on peut donc créer deux formulaires différents, une simple et une avancée :
-
class SimpleUserForm(forms.ModelForm):
-
class Meta:
-
model = User
-
fields = ('username', 'email', 'blog')
-
-
class AdvancedUserForm(forms.ModelForm):
-
class Meta:
-
model = User
-
fields = ('username', 'password', 'email', 'blog')
Ces formulaires partiels peuvent ainsi servir à afficher l'objet ou permettre l'édition mais que sur certains champs.
Vale
no comments | tags: CRUD, django, Form, Python | posted in Python
Sep
5
2010
Ça y est ! mon dernier article sur développez.com est terminé, relu, vérifié, contre-vérifié etc.
Alors si le développement rapide d'application vous intéresse ! Si vous avez envie de voir un autre paradigme que l'éternel MVC ! et enfin si vous avez des problèmes pour utiliser les composants MVD de Qt !
N'hésitez plus à aller lire cet article (promis, il n'y a pas de pub ad-sense) : http://ogirardot.developpez.com/creation-modeles-pyside/
1 comment | tags: developpez.com, MVD, PyQt, PySide, Python | posted in Python
Aug
28
2010
Voilà tout est dit, après avoir découvert et utilisé de nombreuses fois le très bon site http://diveintopython3.org/ tiré du livre de Mark Pilgrim distribué librement. J'ai eu l'idée, comme d'autres avant moi, de commencer à traduire ce très bon ouvrage.
Le travail a commencé et pour l'instant déjà deux contributeurs (Alexandre Grison et Jonathan Winandy) ont mis la main à la pâte pour avancer ce projet titanesque.
Toute aide est la bienvenue, et le dépôt Mercurial associé est ouvert sur BitBucket : http://bitbucket.org/ogirardot/diveintopython3-fr/wiki/Home.
Le travail ne manque pas et les relectures non-plus, donc si ca vous tente n'hésitez pas à me contacter sur Twitter : @ogirardot
1 comment | tags: DiveIntoPython3, Mark Pilgrim, Mercurial, Python3 | posted in Python
Aug
26
2010
Bonjour, j'ai peu bloggé ces temps-ci entre mes contributions pour Virgo, un sprint Django que je suis en train de finir, et mes rédactions d'articles pour développez.net. Pour me rattraper, j'ai décidé de vous faire partager le dernier de ces articles sur la prise des bindings Python pour Qt à savoir PySide/PyQt.
J'espère qu'il vous plaira : http://ogirardot.developpez.com/introduction-pyqt/
no comments | tags: Developpez.net, PyQt, PySide, Python, Qt | posted in Python
Oct
2
2009
Petit article sur un débat d'idées assez intéressant autour des Applications web et du meilleur framework/langage a utilisé. Je suis en simple spectateur compte tenu de mon poste actuel (très peu orienté Web) mais la conclusion sur Zope/Plone est assez intéressante et je ne manquerai pas de tester les deux lors de mes prochains projets Web.
J'apprécie surtout la conclusion sur Django et les URL en Regex que j'avais trouvé très puissante à l'époque, mais qui sont un calvaire à prendre en main et à débugger (comme toute les Regex...).
Je laisse le troll là où il a commencé pour moi sur le site :
http://linuxfr.org/~ploum/23607.html où déjà un certain nombre de participants se sont bien tapés dessus.
Et enfin le screen cast originel venant du JPL : Jet Propulsion Laboratory de la Nasa et plus précisemment de Sean Kelly dont je trouve les videos assez facile d'accès et stimulantes !
Enjoy.
++
no comments | tags: better web applications, django, j2ee, Java, jpl, jsp, nasa, orm, Plone, Python, Rails, ror, Ruby, sean kelly, SQL, uml, Zope | posted in Java, Python