Karrigell ist ein weiteres Python-Framework, welches ermöglicht Python in PHP-artige Weise in HTML-Seiten einzubennen. Gerold hat sich mal die Mühe gemacht, seine ersten Schritte im Forum zu beschreiben. Diese Seite fasst Gerolds Erfahrungen in einem kurzen Wiki-Artikel zusammen.
Inhalt
Einfaches Beispiel
Die PIH-Dateien (Python in HTML) ähneln den altbekannten ASP-Dateien (Active Server Page) ebenso wie PHP. Sie funktionieren sehr gut, aber schon ASP wurde viel zu schnell komplex und so sieh auch mit diesen PIH-Dateien aus. Hier müsste man gleich von Anfang an auf eine gute Template-Engine ausweichen.
Die benötigten Dateien sind:
my_form.pih
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Mein Formular</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<%
# Variablen
error_message = locals().get("error_message", "")
name = locals().get("name", "")
# Fehlermeldung anzeigen
%>
<% if error_message: %>
<div style="border-color: red; border-style: solid; margin: 0.5em;">
<%= error_message %>
</div>
<% end %>
<% # Formular %>
<form action="my_handler.py">
Name: <input type="text" name="name" value="<%= name %>" /><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>
my_handler.py
1 import Template
2
3 name = QUERY.get("name", None)
4
5 if name == "Gerold":
6 # Meldung anzeigen
7 my_answer = Template.getScript("my_answer.pih")
8 print my_answer.render(name = name).value
9 else:
10 # my_form.pih wieder aufrufen und Fehler anzeigen
11 error_answer = Template.getScript("my_form.pih")
12 print error_answer.render(
13 name = name, error_message = "Gib 'Gerold' ein..."
14 ).value
my_answer.pih
<h1>Hallo <%= name %>!</h1>
Templating
Zusätzlich zum Stamm-System mit den PY-, PIH-, HIP- und KS-Dateien kann man die Vorlagensprache "Cheetah" (Dateiendung: TMPL) verwenden. Man ist also zum Glück nicht gezwungen, Python-Code und HTML-Code zu mischen.