P
'
t
i
t
e
C
h
a
t
t
e
 
spacer~ "PEOPLE SAY NOTHING IS IMPOSSIBLE, BUT I DO NOTHING EVERY DAY." Articles | Connexion
 
~Introduction à Zope

Précédent  
  Zope  
  Suivant
 Présentation

A l'instar de Python, de nombreux développeurs semblent se tourner vers une solution Internet nommée Zope. Le hasard faisant vraiment bien les choses, Zope est écrit en Python.
 Sommaire

2. Zope

 Introduction

Depuis quelque temps, un produit intitulé Zope fait de plus en plus parler de lui sur Internet. Ce produit gratuit et Open Source se veut un formidable outil de développement et de maintenance d'applicatifs Web. Un applicatif peut prendre la forme d'un simple site aussi bien que d'un site marchand. Mais Zope pousse le concept encore plus loin en mettant à disponibilité des facilités de maintenance du site, notamment en ce qui concerne l'aspect mutli-utilisateurs du processus. Toute la gestion d'un site se fait par le biais d'une interface accessible par tout navigateur. La gestion s'avère possible par le bais de FTP ou de WebDAV en ce qui concerne la mise en place de fichiers.

La disctinction réelle entre Zope et d'autres produits du même genre est son orientation objet. Si les sites classiques manipulent des fichiers, Zope quant à lui manipule des objets. Un document (une page), une méthode (un fragment de page), un script Python, une image, tout est objet.

Cet aspect offre des possibilités extrêmement intéressantes. Zope conserve ainsi un historique complet des modifications apportées à la structure du site. Annuler une action ou simplement consulter les dernières opérations se veut très facile.

Grâce à Zope, une entreprise, ou un particulier, se voit en mesure de créer des sites complexes, ou même très simple, dont le déploiement et la maintenance se font au sein d'une unique interface d'administration simple. Notez que Zope n'est en aucun cas un outil de workflow. Ici, point de gestion de l'état des documents (brouillon, production.).


 Zope

Zope constitue un serveur Internet en mesure de supporter des charges quotidiennes très importantes. La résolution d'un million de requêtes par jour ne fait pas frémir le serveur, ce qui prouve de nouveau la fiabilité de Python. La dynamique des pages au sein de Zope est assurée par un langage à balises simplifié, le DTML (Document Template Markup Language) et par des scripts Python utilisateurs. L'affichage du titre d'un document pourra se faire ainsi:

<dtml-var title>
       
      
JextCopier dans Jext | Jext | Plugin Codegeek
Nous explorerons les possibilités de DTML au cours des prochains numéros. La mise en place d'un serveur Zope passe tout d'abord par l'installation d'une distribution adaptée à votre système. Le site www.zope.org propose des archives RPM ou TAR/GZ pour Linux. Vous trouverez l'archive .tgz de la version stable 2.4.1 sur le CD. Une fois l'archive décompressée (tar -zxvf Zope-2.4.1-linux2-x86.tgz), vous devrez exécuter la commande "./install" dans le répertoire de Zope. A la fin du processus, un login et un mot de passe vous seront confiés. Notez-les, vous en aurez besoin pour la première utilisation de Zope.

Démarrez maintenant le serveur en exécutant le script shell "./start". Vous pouvez à présent tester l'installation en pointant votre navigateur sur http://localhost:8080. Si une page de bienvenue apparaît, l'installation est réussie. Rendez-vous maintenant à l'adresse http://localhost:8080/manage. Après identification, vous atterissez sur la page principale d'administration. Le volet gauche présente la structure du site. Le volet droit incorpore la liste des contenus du répetoire sélectionné. Notez la présence des onglets servant à accéder aux différentes fonctions des objets.


 Hello world

Créons donc une première page. Dans la liste déroulante "Select type to add.", sélectionnez le type "Folder". Un identifiant et un titre vous sont alors demandés. L'identifiant (Id) sert de nom à l'objet. Ce nom permettra de manipuler l'objet depuis d'autres objets. Rentrez donc "helloworld" et "Hello World !". Cochez ensuite la case "Create public interface" permettant de créer une page par défaut au sein du répertoire. Si maintenant vous allez sur http://localhost:8080/helloworld vous verrez apparître votre page. Pour Zope, la page principale (index) d'un répertoire est nommé "index_html". Cliquez donc dessus dans l'interface d'administration.

Vous voyez alors apparaître une zone de texte contenant du code HTML agrémenté de balises DTML. Prenons donc l'instruction:

<dtml-var standard_html_header>
       
      
JextCopier dans Jext | Jext | Plugin Codegeek
L'emploi de la balise "dtml-var" conduit à l'insertion de la valeur d'un objet dans le document. Ici, nous considérons l'objet standard_html_header. Cet objet fait partie du répertoire "Root Folder". Un peu plus loin nous rencontrons l'insertion de l'objet title_or_id. Cet objet correspod à une propriété du document courant. Si présent, le titre est inséré. Sinon, l'identifiant est appelé. Les balises <dtml> ne sont pas obligatoires. Il existe trois façons d'utiliser les fonctions DTML:

<dtml-var id>
<!--#var id-->
%(var)id;
       
      
JextCopier dans Jext
Il existe plusieurs objets par défaut. Editons par exemple l'objet "standard_html_footer" pour lui faire afficher la date de dernière modification. Eliminez tout le code présent et remplacez-le par:

<font size="1" color="#C0C0C0">
<dtml-var bobobase_modification_time>
</font></body></html>
       
      
JextCopier dans Jext
Toutes vos prochaines pages posséderont par défaut l'affichage de la date de dernière modification.


 Documents

Pour rendre notre site plus attrayant, nous allons lui ajouter d'autres pages. Ces pages correspondront à des utilisateurs différents. Retournez dans le répertoire "helloworld" et ajouter un nouveau "Folder" dont l'id est "utilisateurs". Au sein de ce nouveau répertoire, créez plusieurs sous-répertoires imbriqués en cochant à chaque fois la case "Create public interface". Si vous avez créé un répertoire utilisateurs/guido il est envisageable de faire un lien vers ce répertoire dans la page index_html de helloworld:

<a href="utilisateurs/guido">Python master</a>
       
      
JextCopier dans Jext | Jext | Plugin Codegeek
Que se passerait-il si le répertoire pointé ne contenait pas d'objet index_html ? Zope remonterait alors l'arborescence pour utiliser le premier objet index_html parent rencontré. On constate que Zope introduit une certaine notion d'héritage. Vous pouvez également créer de nouvelles pages en utilisant le type "DTML Document". Pour faire un lien vers un DTML Document utilisez le même principe que précédemment: contentez-vous de spécifier le nom de l'objet. L'utilité de la navigation par arborescence n'est plus à démontrer. Que diriez-vous de créer simplement un menu de navigation au sein du répertoire utilisateurs ? Saisissez donc le code suivant dans index_html de helloworld:

L'instruction tree parcoure tous les éléments d'un objet, en l'occurrence un répertoire. Ensuite, l'objet courant est l'objet en cours dans le répertoire. Autrement dit, l'instruction s'applique à tous les documents rencontrés. Donc, pour chaque document trouvé récursivement dans le répertoire utilisateurs, nous allons afficher son titre sous forme de lien. Le lien de l'élément en cours est donné par tree-item-url. Zope génére alors automatiquement l'aborescence.

<dtml-tree utilisateurs>
  <a href="utilisateurs/<dtml-var tree-item-url>"><dtml-var title></a>
</dtml-tree>
       
      
JextCopier dans Jext

 Zopère en douceur

En créant une image dans Zope vous obtiendrez un nouvel objet. Essayez donc maintenant de l'intégrer dans un DTML Document. Le CD recèle deux exemples créés sous Zope, dont helloworld. Vous devez les placer dans le répertoire "import/" puis utiliser le bouton Import/Export à la racine. Les sites helloworld/ et jext.org/ seront alors disponibles (dans ce dernier, utilisez seulement les liens News et Download).



par Romain Guy
romain.guy@jext.org
http://www.jext.org
Dernière mise à jour : 14/10/2006


Précédent  
  Zope  
  Suivant

 
#ProgX©2005 Mathieu GINOD - Romain GUY - Erik LOUISE