2012-04-02 22 views
7

Chciałbym wiedzieć, czy istnieje sposób na tworzenie stron internetowych bez ogromnego ramy w python.Python: Jak tworzyć proste strony internetowe bez dużych ram?

Myślę o czymś takim, jak PHP/Apache, który pojawia się jako język, a nie z dużym obciążeniem (ale nie lubię PHP ...). W PHP nie ma ORM, żadnego szablonu silnika itp. Ale bardzo łatwo jest po prostu wydrukować Hello World do przeglądarki.

Wiem o Django i naprawdę go lubię, ale jest nieco za duży dla prostych portali internetowych (5-10 stron).

Naprawdę lubię coś prostego, bez instalowania zbyt wiele.

+3

Czego oczekujesz od ram? Powiedziałeś tylko, co to jest * nie * robić. Jeśli w ogóle nic nie powinno robić, to może po prostu pisać strony HTML z dobrym edytorem? –

+0

To samo, co robi PHP, uzyskiwanie wartości POST/GET, przetwarzanie, echo. –

+1

Zaktualizuj swoje pytanie i postaraj się być jak najbardziej szczegółowe. W przeciwnym razie pytanie to "opublikuj swoją ulubioną lekką frameworę internetową Pythona", co nie pasuje do SO. –

Odpowiedz

3

Czy sprawdziłeś już numer Flask?

To znacznie bardziej minimalistyczne ramy i bardzo łatwe do skonfigurowania i uruchomienia.

+0

Butelka jest podobnym minimalistycznym szkieletem, który lubię używać: http://bottlepy.org/docs/dev/ –

+0

Tak, wiem o butelce, wydaje mi się, że kolba nawet z niej pochodzi. – pcalcao

+0

tak! To jest to! Dziękuję Ci. Właśnie to przeszukałem. Prosty. –

0

mod_python może?

+0

W jaki sposób mod_python pozwala to zrobić? Wyjaśnij, co to jest i podaj przykład, jeśli to możliwe, aby ludzie nie musieli klikać. – agf

+0

ktokolwiek wie o Apache, zrozumie co najmniej przybliżoną nazwę tego, co robi mod_python. –

1

Nie jestem pewien, co jest nie tak z liniami django dla twoich celów.

Inną alternatywą byłoby zastąpienie systemu szablonów Django czymś bardziej potężnym, na przykład jinja, więc możesz napisać zupę tagów i tam przetwarzać, z minimalną logiką w widoku.

W praktyce (biorąc pod uwagę, że już znasz django), jest to prawdopodobnie łatwiejsze niż użycie mikroformy (która wymaga większej ilości programisty, w zamian za to, że jest całkowicie bezzasadna o niczym).

0

Polecam CherryPy

import cherrypy 
class HelloWorld(object): 
    def index(self): 
     return "Hello World!" 
    index.exposed = True 

cherrypy.quickstart(HelloWorld()) 
2

Good old CGI to najszybszy sposób, aby dostać się zaczęło. W większości konfiguracji wystarczy upuścić skrypt Pythona w 'cgi-bin' i sprawić, aby był on wykonywalny, bez potrzeby instalowania czegokolwiek. Google dla "cgi python", istnieje wiele samouczków, np. this one wygląda całkiem przyzwoicie.

0

Oczywiście, możesz przejść naprawdę szczupłą trasę CGI lub wsgiref. Dostajesz jednak to, za co płacisz, i wolę Flask lub WerkZeug za cały ból, któremu zapobiegają.

Od wsgiref python docs:

from wsgiref.simple_server import make_server 

def hello_world_app(environ, start_response): 
    status = '200 OK' # HTTP Status 
    headers = [('Content-type', 'text/plain')] # HTTP Headers 
    start_response(status, headers) 
    return ["Hello World"] 

httpd = make_server('', 8000, hello_world_app) 
print "Serving on port 8000..." 

# Serve until process is killed 
httpd.serve_forever() 
4

Użyłem kolbę (i bottle.py) w przeszłości, ale w dzisiejszych czasach faktycznie wolę Pyramid, from the Pylons folks.

Piramida może być dużą, pełnowymiarową strukturą, jest zaprojektowana tak, aby była elastyczna i nie zawiera brakujących wtyczek i rozszerzeń, co zapewnia dodatkową funkcjonalność - ale jest także zdolna do małych, pojedynczych projektów; patrz this tutorial for an example.

Idąc z piramidą, zyskasz przestrzeń do wzrostu, jeśli Twoje potrzeby będą się powiększać w czasie, przy jednoczesnym zachowaniu zdolności do rozpoczynania pracy.

+0

Tak, piramida wydaje się fajna, ale flak jest naprawdę lepszym rozwiązaniem dla mojego "problemu", ponieważ przestawiłbym się na Django na większe rzeczy. –

+0

@DavidHalter Działa to tylko wtedy, gdy wiesz, z góry, czy twój projekt będzie "większy". Jeśli zaczyna się mały, a następnie rośnie organicznie, mając jedyną ścieżkę kompletnego przepisania trochę "ssie. (Również jako były programista Django, jestem trochę niejasny, dlaczego chciałeś przejść na coś z bezwzględnie horriffic ORM [co najmniej w porównaniu do SQLAlchemy, standard, w którym wszystkie inne powinny być mierzone], boleśnie powolny mechanizm szablonowania, mniej wtykowy mechanizm routingu adresów URL i tak dalej ... ale to zupełnie osobna rozmowa). –

+0

Och, wygląda na to, że muszę też wypożyczyć piramidy. Nienawidzę Django ORM za jego nieumiejętność obsługi kluczy kompozytowych. Silnik szablonów jest naprawdę powolny, masz rację (z PyPy jest znacznie lepiej). Piramida brzmi naprawdę dobrze. Muszę spróbować. –

0

Python działa dobrze przy użyciu CGI.

To najprostsza rzecz, jaką możesz zrobić: potrzebuje tylko Apache i działającego środowiska Pythona i jest najbliższa standardowej konfiguracji PHP.

Należy pamiętać, że podczas korzystania z CGI skrypt Pythona jest odpowiedzialny za wyprowadzanie niezbędnych nagłówków HTTP (sys.stdout.write('Content-Type: text/html\n\n')), ale istnieje moduł CGI, który jest częścią standardowej biblioteki Pythona, co znacznie ułatwia obsługę surowców (post/pobierz analizę argumentów, pobieranie nagłówków, generowanie nagłówków).