89 lines
3.4 KiB
Markdown
89 lines
3.4 KiB
Markdown
|
---
|
||
|
title: Bottle
|
||
|
localeTitle: Botella
|
||
|
---
|
||
|
El marco de la botella nos permite comenzar a trabajar de manera muy rápida y sencilla con una aplicación web básica.
|
||
|
|
||
|
A continuación se detalla cómo escribir y ejecutar una aplicación web de saludo simple donde podemos ingresar nuestro nombre en un formulario, presione enviar y recibir un saludo.
|
||
|
|
||
|
1. Use `pip` para instalar el paquete de la botella.
|
||
|
|
||
|
```
|
||
|
pip install bottle
|
||
|
|
||
|
```
|
||
|
|
||
|
2. Cree un archivo `html` para servir al cargar el sitio. Por ejemplo `index.html` .
|
||
|
|
||
|
Agreguemos un encabezado y un formulario básico a esta página.
|
||
|
|
||
|
```html
|
||
|
|
||
|
<h3>Say Hello</h3>
|
||
|
|
||
|
<form action="/hello" method="get">
|
||
|
Name:
|
||
|
<input type="text" name="name"><br><br>
|
||
|
<input type="submit">
|
||
|
</form>
|
||
|
|
||
|
```
|
||
|
|
||
|
3. Crea un nuevo archivo python, ejemplo `main.py`
|
||
|
|
||
|
4. En la primera línea del archivo necesitamos importar las funciones de obtención, solicitud y ejecución desde el módulo de botella.
|
||
|
|
||
|
```python
|
||
|
from bottle import get, request, run
|
||
|
|
||
|
```
|
||
|
|
||
|
5. Ahora definimos nuestra función para servir nuestro archivo html cuando se accede a la página raíz.
|
||
|
|
||
|
Aquí usamos el decorador `@get` , que especifica que esta función debe responder a `HTTP GET` solicitudes `HTTP GET` y pasar `'/'` como la ruta por la que se invocará la función.
|
||
|
|
||
|
A continuación definimos la función `index()` usando la palabra clave `def` .
|
||
|
|
||
|
Para leer y devolver el archivo html que creamos en el paso 2, usamos lo que se llama un administrador de contexto. Esto se encarga de abrir y cerrar el archivo para nosotros, lo que nos permite leer los archivos y los contenidos y devolverlos con la declaración de `return` .
|
||
|
|
||
|
```python
|
||
|
@get('/')
|
||
|
def index():
|
||
|
with open('./index.html') as f:
|
||
|
return f.read()
|
||
|
|
||
|
```
|
||
|
|
||
|
6. Para que el sitio se ejecute y escuche las solicitudes, debemos agregar una llamada a la función de `run` marcos de la botella de la siguiente manera.
|
||
|
|
||
|
Aquí pasamos el host en el que se ejecutará la aplicación web, en este caso `localhost` , y el puerto en el que debe escuchar las solicitudes HTTP.
|
||
|
|
||
|
7. Ejecute la aplicación y cárguela en su navegador http: // localhost: 8080 /, debería ver el archivo html que creamos en el navegador.
|
||
|
|
||
|
Si ingresamos nuestro nombre y presionamos enviar ahora, obtendremos un error `HTTP 404` ya que aún no hemos definido la función para responder a esta solicitud.
|
||
|
|
||
|
```python
|
||
|
run(host='localhost', port=8080)
|
||
|
|
||
|
```
|
||
|
|
||
|
8. De vuelta en nuestro archivo `main.py` , ahora necesitamos definir la función para responder al sumbitting nuestro formulario.
|
||
|
|
||
|
Nuevamente usamos el decorador `@get` aquí, sin embargo, esta vez pasamos en `'/.hello'` como el camino. Puede observar que esta es la misma ruta que definimos en el atributo de acción de nuestro formulario en `index.html` .
|
||
|
|
||
|
A continuación, recuperamos el valor del `name` de la url. Al enviar el formulario, los datos del formulario están url codificados de esta manera http: // localhost: 8080 / hello? Name = Jon + Snow
|
||
|
|
||
|
Finalmente devolvemos nuestro saludo, agregando el nombre ingresado en nuestro formulario.
|
||
|
|
||
|
```python
|
||
|
@get('/hello')
|
||
|
def hello():
|
||
|
name = request.query['name']
|
||
|
return f'Hello {name}'
|
||
|
|
||
|
```
|
||
|
|
||
|
|
||
|
### Fuentes
|
||
|
|
||
|
https://bottlepy.org/docs/dev/
|