web.py
22 July 2008
Comments
web.py to bardzo prosty "skrypt" do tworzenia stron www w Pythonie. Instalacja jest prosta, wystarczy wykonać polecenie:
easy_install web.py
Ręczna instalacja wygląda następująco:
- Pobieramy najnowszą wersję web.py, rozpakowujemy
- I instalujemy wydając w konsoli polecenie:
python setup.py install
Prosta Aplikacja
import web
urls = (
'/(.*)', 'hello'
)
class hello:
def GET(self, name):
print 'Test'
if __name__ == "__main__": web.run(urls, globals())
Zmienna url przechowuje listę urli wywołujących określoną klasę. Pierwszy element to wyrażenie regularne określające URL a drugi to nazwa klasy, która zostanie wywołana.
Przekazywanie argumentów
Web.py umożliwia przekazywanie do metod zmiennych ze zmapowanych odnośników dopasowanych do wyrażeń regularnych np:'/news/data/(.*)/', 'archiwum',
Metody klasy archiwum dostaną drugi argument, który możemy dowolnie nazwa, a zawierać będzie wartość zmapowaną w wyrażeniu regularnym:
def GET(self, data)
Formularze
Dla danej klasy możemy zdefiniować metodę POST, która wywołana zostanie przez żądanie POST - np. wysłanie formularza. Dostęp do wysłanych danych zapewnia web.input():class klasa:
def GET(self):
print '
To jest GET
'
def POST(self):
print '
To jest POST
'
form = web.input()
print form.nazwa_pola
web.py i FastCGI
Produkcyjnie nie należy stosować bezpośrednio serwera web.py, lecz skorzystać ze standardowego serwera HTTP, np. lighttpd, dla którego konfiguracja wygląda następująco: fastcgi.server = ( "/web/" =>
(( "socket" => "/tmp/fastcgi.socket",
"bin-path" => "/ścieżka/do/pliku.py",
"check-local" => "disable"
))
)
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import web
############################ kod widoków
urls=(
)
class klasa:
def GET(self):
print '
To jest GET
'
def POST(self):
print '
To jest POST
'
#############################
if __name__ == "__main__":
web.webapi.internalerror = web.debugerror
web.wsgi.runwsgi = lambda func, addr=None: web.runfcgi(func, addr)
web.run(urls, globals(),web.reloader)
RkBlog
Comment article