# Programmation Python/Karrigell
## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp

## Partie 1 - Introduction

* Avant-propos à l'attention des non-programmeurs
* Introduction
* Installation
* Éditeurs
* Programmer en deux minutes
** une messagerie instantanée
** un programme interfacé avec Wikipédia
** un serveur Web

## Partie 2 - Le langage

* Afficher un texte
* Structure d'un programme
* Variables
* Opérateurs
* Structures de contrôle
* Instructions répétitives
* Types
** Numériques
** Booléens
** Chaines de caractères
** Listes
** Tuples
** Dictionnaires
** Dates
** Ensembles
* Fonctions
* Modules
* Exercices
** Palindrome
* Regex
* Programmation orientée objet pour les non-programmeurs
* Classes
* Classes et Interfaces graphiques
* Fichiers
* Exceptions
* Bases de données
** Gestion
* L'interface CGI
* Applications web
* Réseau
* Threads

## Partie 3 - Les bibliothèques

* Bibliothèques pour Python
* L'interface graphique
* Utilisation de fenêtres et de graphismes
** Tkinter
** Widgets
** Turtle
* Les threads
* XML
* JSON
* Tests
* Analyse statique de programmes
* Fabric
* Le Web
** Django
** Karrigell
** Aiohttp
[ Modifier le sommaire ]
Karrigell est un canevas (framework) de développement web écrit en Python très simple d'utilisation.
À l'inverse d'autres frameworks écrits en Python, il ne nécessite pas d'apprendre un métalangage, car il reste très proche de la syntaxe python. Le code est donc simple à écrire et facile à maintenir.
Karrigell intègre un serveur web très efficace, mais il peut aussi travailler derrière d'autres serveurs web (Apache, Lighttpd et Xitami...).
Les bases de données courantes (sqlite, MySql, PostGresQL, etc.) peuvent être utilisées, cependant Karrigell inclut la base Buzhug, écrite par l'auteur, dans le même esprit que Karrigell.

## Intérêt de Karrigell

Tout comme le PHP, Karrigell permet d’intégrer des scripts python à l’intérieur d’un document html en utilisant les symboles "<%" … "%>". Mais on peut également inclure du code HTML dans des scripts python.
Karrigell permet également de créer des sites d'une seule pièce, avec un service Karrigell (fichier .ks) dont les fonctions sont considérées comme des pages. Les fonctions dont le nom commencent par '_' sont privées.
L'utilisation du "karrigell service" (.ks) permet cependant d'avoir une certaine logique d'application dans un seul script. En outre, il est tout à fait possible d'inclure des scripts, ou des modules afin d'améliorer la lisibilité du script.
Karrigell offre un puissant système de template nommé cheetah et propose un module HTMLTags pour des balises HTML valides.

## Installation de Karrigell

Décompresser le fichier que vous avez téléchargé (au format .zip, .tgz ou .tar.bz2) dans un répertoire tel que /home/myname/karrigell puis se placer dans le répertoire Karrigell-2.4.0.
Ouvrez une fenêtre console (un terminal), mettez-vous dans le Karrigell-2.4.0 (cd /home/myname/karrigell/Karrigell-2.4.0) et exécutez :
Vous devriez voir apparaître le message :

## Configuration de Karrigell, mon premier site

Pour tester les exemples suivants, créons le repertoire "monsite" de notre site dans Karrigell-2.4.0/webapps/monsite
Puis se placer dans Karrigell-2.4.0/conf/ et ouvrir le fichier Karrigell.ini
Modifier les variables :
Ainsi lorsqu'on relancera le serveur, dans le terminal :
Il affichera:
Il suffit alors de se connecter en localhost via le navigateur: http://localhost:8081

### Exemple de script python dans un document HTML

Dans le répertoire "monsite", créer un fichier index.html
Puis avec le navigateur : http://localhost:8081

### Exemple de code HTML dans un script Python

Dans le répertoire "monsite", créer un fichier index.py
Puis avec le navigateur : http://localhost:8081

### Exemple de script Karrigell Service

Dans le répertoire "monsite", créer un fichier index.ks dans lequel on inclut le code suivant :
Puis avec le navigateur : http://localhost:8081

### Exemple d'importation de module dans un script Karrigell Service

Dans le répertoire "monsite", créer un fichier conf.cfg, un script index.ks, et un script maconfig.py qui sera le module.
Le fichier conf.cfg :
le script index.ks
Le module maconfig.py:

## Karrigell Intègre

* Un serveur web
* Implémentation d'un mécanisme d'authentification et de gestion des utilisateurs
* Des sessions
* Accès facile aux données d'environnement, formulaires et base de données (Buzhug)
* Moteur de template Cheetah

## Extensions

    La liste exclut les extensions normalement prises en charge par un serveur
* .hip : HTML Inside Python
* .pih : Python Inside HTML
* .py : Fichier Python/ironpython
* .ks : "Karrigell service" = script Python dans lequel les fonctions sont associées à une URL

## Références

* ↑ Site web de cheetah template

## Voir aussi

* anglais Site officiel (anglais)
* anglais Site officiel de la version Version 3.0
* français Site officiel (français)
* anglais buzhug (base de données en Python)
* anglais xRope (IDE de développement Python qui supporte le format de fichiers Karrigell)