2013/4/14 Riccardo mancuso <mancuso.riccard...@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
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python