====== Usare il framework Bottle per avere un'esperienza simile al PHP ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 26/10/2022 - 12:15 //** // // Se si volessero creare delle rotte automatiche basate sui nomi di file degli script Python si potrebbe avere un'approccio come il seguente: {{:programmazione:python:bottle:pythonlikephp.png|}} #!/usr/bin/env python3 import os from bottle import Bottle,route, run, template, static_file, request,redirect, response,get, post global app app=Bottle() PORT=8080 DOCUMENTROOT="./htdocs" def start_server(): run(app , host='0.0.0.0', port=PORT, reloader=True) def runScript(filename): code=open(DOCUMENTROOT+os.sep+filename).read() exec(code) global html return html app.route("/", ['GET', 'POST'], runScript) @app.route("/") def home(): redirect("/index.py") start_server() LE pagine (script Python) devono essere messe nella cartella specificata dalla variabile **DOCUMENTROOT** . E devono esplicitare la variabile **html** come global. Ecco come: **page.py** global html html=''' Python like PHP pagina due

Python like PHP - Pagina

Page

'''
====== Lavorare con i form ====== **form.py** global html if request.forms.get('txt') is not None: ret=request.forms.get('txt') else: ret='' html=''' Python like PHP pagina due

Form {ret}

''' html=html.format(ret=ret)
====== E se volessimo creare delle rotte statiche senza spegnere il server? ====== Per fare questo ci avvaliamo di uno script python (.py) messo sempre nella cartella htdocs (preferenza del nostro script). Dichiariamo la variabile app come global sia su main.py che sul nostro script per aggiornare le rotte. **refresh-routes.py** global app def fabio(): return("

Fabio ciao

") def fml(): return("

FML ciao

") app.route("/fabio", ['GET', 'POST'], fabio) app.route("/fml", ['GET', 'POST'], fml)
Le rotte verranno impostate su questo script. Per renderle operative basta richiamare lo script stesso dal browser . Verranno sovrascitte tutte le rotte precedenti e aggiunte quelle nuove. Una volta richiamato lo script (per esempio: **http://localhost:8080/refresh-routes.py**) le rotte saranno disponibili per tutti gli utenti che si collegheranno al server.