[Python] webapp in bottle: come creare una form per inserire i dati ?

Andrea Francia andrea a andreafrancia.it
Dom 14 Apr 2013 20:04:41 CEST


2013/4/14 Riccardo mancuso <mancuso.riccardo63 a gmail.com>

> vorrei imparare a sviluppare web application in Python. Poichè vorrei
> capire i fondamenti, ho deciso di imparare bottle,micro-web-framework, che
> sembra anche dagli esempi riportati nel sito di riferimento (
> http://bottlepy.org/docs/dev/index.html) semplice ed essenziale.
>

Ho dato uno sguardo al tutorial. Non mi piace Bottle.

Prendiamo questo esempio:

@route('/static/<filename:path>')def send_static(filename):
    return static_file(filename, root='/path/to/static/files')

Non mi piace che accoppi la definizione delle rotte con la definizione di
come devono essere servite.
La struttura e soprattutto le stringhe usate nelle rotte potrebbero
cambiare per motivi diversi da quelli che possono far cambiare le funzioni
che servono il risultato. Una violazione di SRP.

L'altra cosa che non mi piace é come viene servito l'output:

@route('/hello')def hello():
    return "Hello World!"

L'output viene servito con una stringa. La stringa deve essere preparata
nel corpo della funzione e infine restituito al framework che provvede a
spedirlo al client. Questo vuol dire che bisogna creare prima tutto il
testo della risposta e solo alla fine si può cominciare a spedire. Uno
vorrebbe che si potesse spedire un po' alla volta soprattutto quando la
risposta é lunga.

L'altra cosa che non mi piace é questa:

@route('/login')def login():
    username = request.forms.get('username')
    password = request.forms.get('password')
    if check_user_credentials(username, password):
        response.set_cookie("account", username, secret='some-secret-key')
        return "Welcome %s! You are now logged in." % username
    else:
        return "Login failed."


La funzione login accede a request che é una global instance.
Questo vuol dire che una delle dipendenze di login() é iniettata in modo
implicito.
Questa struttura intralcia la scrittura di test automatici indipendenti
perché richiedono di stubbare o mockare uno stato globale.

Ciao


-- 
Andrea Francia http://andreafrancia.it
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130414/95d9a96e/attachment.html>


Maggiori informazioni sulla lista Python