Appels illimités vers le Maroc

December 22, 2009 on 1:15 pm | In Iliad - Free, actu informatique | No Comments

Free l’a fait !

Les appels vers le Maroc sont maintenant inclus en illimité dans le forfait ADSL les appels vers le Maroc ! Allez vite dans votre interface de gestion pour accepter les nouvelles CGV pour profiter de cette nouvelle offre !!

Cela fait un joli cadeau de fin d’année, en plus des dernières annonces fracassantes de notre FAI préféré :

  • Obtention de la nouvelle licence 3G
  • Jeux vidéos sur la Freebox
  • La gestion des enregistrements à distance
  • Les point d’accès Free WiFi

Astuces Django

December 11, 2009 on 1:46 am | In Python, developpement, django, web | 1 Comment

tipsSuite à mon quickstart Django, me revoici avec quelques astuces pour continuer.

Pour tester/développer avec Django, je rappelle qu’il vaut mieux utiliser le serveur de dev intégré, puis passer à Apache, nginx ou autre pour la production par la suite.

Il est important de lire pour commencer les principes de la philosophie Django ainsi que le ‘django coding style’

Ne hardcodez pas vos paths

  • dans votre settings.py :
  • BASE_DIR = os.path.dirname(__file__)
  • utilisez ensuite os.path.join avec settings.BASE_DIR ailleurs si besoin
  • Pour importer les settings de votre projet, utilisez toujours
    from django.conf import settings

Utilisez un fichier local_settings.py

  • Créez un fichier local_settings.py qui contiendra uniquement les settings relatifs au déploiment de votre application : settings de base de données, smtp, debug… Vous n’aurez plus que celui la à modifier pour un nouveau déploiement.

Mettre en production avec Apache

  • Pour une installation classique avec Apache, utilisez de préférence mod_wsgi. N’utilisez pas le serveur de dev intégré en production!

Debug AJAX plus pratique

Queysets : filters et excludes dynamiques

  • Utilisez les dictionnaires pour filtrer dynamiquement vos querysets :
filtres = {}
filtres['date__gte'] = datetime.datetime.today() – datetime.timedelta(dasy=7)
filtres['titre__icontains'] = ‘python’
excludes={}
excludes['epuise'] = True
qs = model.Livres.objects.exclude(**excludes).filter(**filtres)

Créez des applications modulaires

  • Placez vos app dans un sous dossier ‘apps’
  • Utiliser des objets génériques : le ContentType framework

Utilisez un script pour mettre à jour vos modèles

  • Django ne gérant pas nativement les ALTER sur votre base de données, vous devez sauvegarder (manage.py dumpdata), reset votre base (manage.py reset) puis recréer votre base (manage.py syncdb) et recharger les données (manage.py loaddata).
  • Utilisez plutot un script qui automatisera cette tache

Utilisez des décorateurs dans vos vues

  • @login_required pour restreindre la vue aux utilisateurs loggés
  • @user_passes_test(lambda u: u.has_perm(’polls.can_vote’)) pour restreindre la vue selon un test particulier
  • créez vos propres décorateurs

Ne définissez qu’une fois vos urls

  • Utilisez les named-urls pour ne plus harcoder vos urls
    • Dans urls.py :  
      (r’^articles/list/(\d)+’, apps.main.list, name=”list-view”)
    • Dans une vue :
      return HttpResponseRedirect(reverse(’list-view’, args=[2007]))
    • Dans un template :
      <a href=”{% url list-view 2007 %}”>ma vue</a>
  • Utilisez get_absolute_url() sur vos modèles pour affecter une url à chacun de vos objets

Des questions que vous vous posez surement :

De bons examples de coding-styles :

Différents cas de figures sur les formulaires Django : http://uswaretech.com/blog/2010/01/doing-things-with-django-forms/

Bien démarrer avec django

December 2, 2009 on 12:21 pm | In General, Python, developpement, django | 1 Comment

Cela fait maintenant presque deux ans que j’utilise intensivement le framework Django pour toutes mes applications web, et j’ai enfin réuni assez d’éléments pour pouvoir vous livrer un petit ‘QuickStart’ qui vous permettra de démarrer rapidement.

Contrairement à d’autres frameworks web, Django n’est pas orienté CMS ou HTML. Vous pouvez tout autant créer un site HTML/Ajax, une API RESTFUL http ou une application en ligne de commande.

Django permet de coder toute la partie serveur de votre application, mais pour la partie ‘client’, c.a.d. le HTML par exemple, vous devrez vous débrouiller tout seul ou utiliser un autre framework, jQuery par exemple, ou ExtJs.

django

Pourquoi Django ?

Open Source
Portable
Langage Python
Prototypage rapide
Evolutivité
Abstration ORM
Supporté par Google AppEngine (avec restrictions)
Excellente documentation

Fonctionnalités principales :

  • ORM : permet une abstraction de la base de données et du SQL, ce qui fait que vos applications peuvent tourner sur : SQLlite, MySQL, SQLserver, Oracle, PostGres…
  • Admin automatique : une fois vos modèles définis, ils sont de suite accessible dans l’interface d’admin automatique, et vous pouvez toute de suite créer objets
  • Templates : une gestion des templates très poussée, avec gestion des héritages, des filtres et ‘customs tags’.
  • Shell intégré : Tout votre code est également accessible directement depuis un shell intégré
  • Gestion des utilisateurs : Toute la partie utilisateurs, comptes, login, sécurité et permissions est déjà disponible sans efforts

Inconvénients :

A noter que Django est une librairie python, vous pouvez n’utiliser que les fonctions dont vous avez besoin, même en ’standalone’  (hors du web).  Et vous pouvez tout modifier, étendre et améliorer à souhait.

La première chose à faire avant de se lancer dans Django est déjà de connaitre un minimum le langage python et sa ‘magie’. Le livre ‘Think like a computer scientist‘ est à lire, Instant Python pour les préssés, et “A byte of python” (en francais).

C’est parti

Installez python (2.5 ou 2.6) sur votre machine, et récupérez la dernière version de Django. Le repertoire ‘django’ de cette archive doit se trouver dans le dossier ‘lib/site-packages’ de votre installation de Python. Si vous souhaitez utiliser MySQL comme serveur, installez python-mysqldb. Sinon, SQLlite fera très bien l’affaire pour démarrer !

Pour tester si votre installation de python/django est correcte :

juju@devserver:/var/www/django$ python
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
juju@xxxxxxx:/home/juju$ python
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>>import django
>>>print django.VERSION
(1, 0, 2, ‘final’, 0)
>>>

Si vous avez une erreur lors de l’import, alors votre dossier ‘django’ n’est pas dans votre dossier python\lib\site-packages, vérifiez.

Si l’install est correcte, alors vous pouvez créer votre premier projet django.

Exemple sur windows :

Ouvrez un shell, et placez vous dans votre dossier de travail, puis lancez la commande django-admin.py startproject

cd c:\dev\django
c:\dev\django>c:\Python25\lib\site-packages\django\bin\django-admin.py startproject projet1

Un dossier ‘projet1′ a été crée et contient les fichier de base :

  • settings.py : configuration du projt, base de données, emails…
  • urls.py : la configuration des urls de votre projet
  • manage.py : la commande qui permet de lancer le serveur, mettre a jour les bases et effectuer des opérations de maintenance.
  • __init__.py : ce fichier permet simplement à Python d’interpréter le dossier en tant que ‘module’

Pour développer un projet Django, utilisez le ’serveur de dev’ intégré (commande manage.py runserver), mais pour la production, vous devrez mettre en place Apache+WSGI, Nginx ou un autre serveur.

Lancez le serveur pour vérifier que votre projet est bien crée :

cd c:\dev\django
c:\dev\django>manage.py runserver
Validating models…
0 errors found
Django version 1.0-alpha-SVN-8225, using settings ‘projet1.settings’
Development server is running at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Maintenant vous pouvez ouvrir votre browser à cette adresse : http://127.0.0.1:8000/

Modifiez le fichier settings.py, puis suivez le premier tutorial pour commencer à faire joujou.

Je reviens prochainement  pour la suite.

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^