5fa2   Mod_python how to Pigmej Blog

Internet Technologies & News

Mod_python how to

Krótkie i proste mini how to odnośnie wykorzystania mod_pythona na stronach www. Być może niedługo powstanie cały cykl takich how to (mniej i bardziej zaawansowanych).

I. Czego potrzebujemy aby napisać aplikację webową w pythonie? 1. Serwer WWW z obsługą mod_python 2. Możliwość tworzenia plików .htaccess (99% usługodawców zapewnia) 3. Znajomość pythona (choćby podstawy) 4. Znajomość HTML (do wyświetlenia rezultatów naszych działań w przeglądarce)

II. Ustawienie .htaccess: AddHandler python-program .py PythonHandler mod_python.publisher | .py PythonDebug on DirectoryIndex index.py

AddHandler - Linijka informuje serwer apache jak ma traktować pliki .py PythonHandler - W tym how to potrzebować będziemy funkcji publishera (wszelkiego rodzaju przesyłanie informacji w formularzach itp) PythonDebug - Jak coś źle będzie napisane to mod_python wyświetli TraceBack znany z “normalnej” wersji Pythona. Zostawienie tej opcji włączonej po napisaniu i ukończeniu skryptu nie jest zalecane, ponieważ może doprowadzić do odczytania części kodu źródłowego Twojej aplikacji. DirectoryIndex - Plik index.py staje się domyślnie wczytywanym w katalogu w którym znajduje się .htaccess

III. Plik źródłowy:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/python
# -*- coding: iso-8859-2 -*-
 
from mod_python import apache
from email.MIMEText import MIMEText
import smtplib
 
plik_g="""<html>
<head>
<title>Demo skryptu</title>
</head>
<body>"""
 
plik_d="</body></html>"
 
def index(req):
	odp="""<form action="index.py/wyslij" method="POST">
	Twój Nick: <input size="25" type="text" name="nick"><br />
	Temat: <input size="25" type="temat" name="temat"><br />
	Tresc: <textarea name="tresc" rows="10" cols="70"></textarea>
	<input type="submit" value="Wyslij">
	</form>"""
	req.content_type="text/html"
	req.send_http_header()
	req.write(plik_g+odp+plik_d)
	return
 
def wyslij(req, nick='', temat='', tresc=''):
	if nick=='' or temat=='' or tresc=='':
		odp="Wszystkie pola są obowiazkowe"
	else:
		msg=MIMEText(tresc, 'plain', 'iso-8859-2')
		msg['Subject']=temat
		msg['To']="me@pigmej.eu"
		msg['From']=nick+'@z_jakiejs_domeny.com'
		s=smtplib.SMTP()
		s.connect()
		s.sendmail(msg['From'], msg['To'], msg.as_string())
		s.quit()
		odp="Wysłano"
	req.content_type="text/html"
	req.send_http_header()
	req.write(plik_g+odp+plik_d)
	return

Na samym początku

1
2
#!/usr/bin/python
# -*- coding: iso-8859-2 -*-

określamy, że chcemy korzystać z pythona i używać polskich znaków w jego kodzie.

Linie

4
5
6
from mod_python import apache
from email.MIMEText import MIMEText
import smtplib

Importują potrzebne nam moduły pythona. Jak widać do wysyłania maili użyłem MIME. A dokładniej MimeText. Dzięki MIME można wysyłać praktycznie dowolne pliki jako załączniki (o tym napiszę kiedy indziej)

Zmienna plikg zostanie użyta aby wyświetlić nasz skrypt w html, jest to jego górna część, plikd to dół pliku html. Dlaczego tak? w taki sposób możemy bardzo łatwo definiować style dla naszego skryptu. (dodawać kolejne zmienne do generowania menu itp). Dzięki temu praktycznie od razu możemy zmienić cały lay out. (tak wiem, że istnieją PSP - PythonServerPages)

23
24
25
26
	req.content_type="text/html"
	req.send_http_header()
	req.write(plik_g+odp+plik_d)
	return

Tutaj wysyłamy odpowiedź do przeglądarki użytkownika. Dzięki

23
	req.content_type="text/html"

określamy sposób wyświetlenia odpowiedzi, czy będzie to html, tekst itp. Znaczenie nadrzędne, zdefiniowanie text/plain nawet jeśli w odpowiedzi mamy znaczniki html spowoduje wyświetlenie całości jako tekst.

Cóż, reszta pliku jest w zasadzie “nie do komentowania”.

W razie większego zainteresowania napiszę następne bardziej zaawansowane how_to.

Zapraszam do komentowania, pytania i wyrażania opinii. Jeśli masz jakiś problem z napisaniem jakiejś miniaplikacji, daj mi znać, być może napiszę o tym how to.

2 Komentarzy dla “Mod_python how to”

  1. HOWTO do mod_pythona:

    […] blogu Pigmeja pojawiło się “krótkie i proste mini how to odnośnie wykorzystania mod_pythona na stronach www”. […]

  2.   MySQL i mod_python Pigmej Blog:

    […] Pythona jak na poziomie how to nr1 ( tutaj […]

Napisz komentarz

Musisz być zalogowany aby napisać komentarz.

0