En este artículo, vamos a crear un formulario de registro utilizando el módulo PyWebIO. Este es un módulo de Python que se utiliza principalmente para crear interfaces simples e interactivas en la web local utilizando la programación de Python.
Este formulario tomará como entrada el nombre de usuario, el nombre, la contraseña, el correo electrónico y el enlace del sitio web. Hablando de contraseñas, también verificará su contraseña nuevamente para confirmar si su contraseña es correcta o no. También validará su número de teléfono, enlace del sitio web, dirección de correo electrónico. Después de eso, obtendrá el botón de opción que consiste en Sexo, y también obtendrá la sección de comentarios para que pueda escribir sus comentarios.
Elementos de formulario
Para crear un formulario adecuado con validaciones, aprenderemos diferentes elementos del formulario uno por uno con ejemplos.
1. input_group: este elemento se utiliza para obtener las entradas del grupo. Cuando usamos input_group , debemos proporcionar el parámetro de nombre a cada función de entrada para identificar los elementos de entrada en el resultado.
Sintaxis: input_group(“Título”, [input(‘Cualquier nombre’, nombre=’Cualquier cosa’), input(‘Cualquier nombre’, nombre=’Cualquier cosa’)])
Python3
info = input_group("Group inputs", [ input('Username', name='username'), input('Password', name='pass')])
Producción:
2. entrada: este elemento se utiliza para tomar todo tipo de entradas del usuario desde el navegador.
Sintaxis: input(‘Algo de texto’)
Python3
input("Your name")
Producción:
3. tipo: Esto se define dentro de la función de entrada o función input_group . Esto depende de la elección del usuario si el usuario quiere un número en la entrada o un texto en la entrada. Si el tipo es igual al número, solo aceptará números y un caso similar para el texto.
Sintaxis:
input(‘Algo de texto’, type=TEXT)
input(‘Algo de texto’, type=NUMBER)
input(‘Algo de texto’, tipo=CONTRASEÑA)
Python3
input('Name', type=TEXT) input('PIN', type=NUMBER) input('Password', type=PASSWORD)
Producción:
4. requerido: si requerido es verdadero, eso significa que debe ingresar algo, no podemos dejarlo en blanco, de lo contrario, será a través de un error llamado «Por favor complete este campo». Por defecto, es falso.
Sintaxis: input(‘Algo de texto’, requerido=Verdadero)
Python3
input('Name', required=True)
Producción:
5. validar: este elemento recibe la entrada como un parámetro, cuando el valor de entrada es válido, devuelve True, cuando la entrada del usuario no es válida, devuelve un mensaje de error.
Sintaxis: input(‘Algo de texto’, validar=es_válido)
Python3
def is_valid(data): if data <= 0: return 'Age cannot be negative!' input('Age', type=NUMBER, validate=is_valid)
Producción:
6. cancelable: si el formulario se puede cancelar. El valor predeterminado es Falso. Si cancelable=True, se mostrará un botón «Cancelar» en la parte inferior del formulario.
Sintaxis: input_group(“Título”, [input(‘Cualquier nombre’, nombre=’Cualquier cosa’), input(‘Cualquier nombre’, nombre=’Cualquier cosa’)], cancelable=True)
Python3
input_group("Info", [input('Name', name='name'),input('PIN ', name='pin')], cancelable=True)
Producción:
7. PlaceHolder: este elemento se usa solo en la función input_group, esto se usa para mostrar un texto muy claro.
Sintaxis: input(‘Algún texto’, placeholder=”algún texto”)
Python3
input('Name', placeholder="Please Enter your name")
Producción:
8. radio: El botón de radio se utiliza cuando tenemos que elegir una sola opción entre las muchas opciones, es decir, solo se puede seleccionar una sola.
Sintaxis: radio(“Algo de texto”, options=[‘Opción 1’, ‘Opción 2’])
Python3
radio("Gender", options=['Male', 'Female'])
Producción:
9. seleccionar: Esto también se llama selección desplegable. De forma predeterminada, solo se puede seleccionar una opción a la vez. También puede seleccionar varias opciones configurando el parámetro «múltiple» en Verdadero.
Sintaxis: select(“Algo de texto”, opciones=[‘Opción 1’, ‘Opción 2’, ‘Opción 3’, ‘Opción 4’], múltiple=Verdadero)
Python3
select("Tech Stack", options=[ 'C Programming', 'Python', 'Web Development', 'Android Development'])
Producción:
10. área de texto: este elemento se utiliza para realizar entradas de varias líneas en un área de entrada de texto. La fila es un elemento definido dentro del área de texto que se utiliza para varias líneas de texto visibles.
Sintaxis: área de texto («Algo de texto», filas = 3)
Python3
textarea("Comments/Questions", rows=3)
Producción:
11. casilla de verificación: la casilla de verificación permite a los usuarios seleccionar/deseleccionar múltiples valores, tenemos que proporcionar las opciones para que el usuario pueda seleccionar cualquier valor.
Sintaxis: checkbox(“Algo de texto”, options=[‘Opción 1’, ‘Opción 2’, ‘Opción 3’])
Python3
checkbox("Languages", options=['Hindi', 'English', 'French'])
Producción:
12. ventana emergente: la ventana emergente se utiliza para producir una salida en forma de ventana emergente, no se pueden mostrar varias ventanas emergentes a la vez. Antes de mostrar una nueva ventana emergente, la ventana emergente existente en la página se cerrará automáticamente o puede cerrarla manualmente.
Sintaxis: popup(“Título”, “Texto”)
Python3
popup("Who are you?", "Geeks for Geeks")
Producción:
Forma completa
Python3
# Import following modules from pywebio.input import * from pywebio.output import * from pywebio.session import * import re # For checking Email, whether Valid or not. regex = '^(\w|\.|\_|\-)+[@](\w|\_|\-|\.)+[.]\w{2,3}$' # For checking Phone Number, whether Valid or # not. Pattern = re.compile("(0/91)?[6-9][0-9]{9}") # For Checking URL, whether valid or not regex_1 = ("((http|https)://)(www.)?" + "[a-zA-Z0-9@:%._\\+~#?&//=]" + "{2,256}\\.[a-z]" + "{2,6}\\b([-a-zA-Z0-9@:%" + "._\\+~#?&//=]*)") Pattern_1 = re.compile(regex_1) def check_form(data): # for checking Name if data['name'].isdigit(): return ('name', 'Invalid name!') # for checking UserName if data['username'].isdigit(): return ('username', 'Invalid username!') # for checking Age if data['age'] <= 0: return ('age', 'Invalid age!') # for checking Email if not (re.search(regex, data['email'])): return ('email', 'Invalid email!') # for checking Phone Number if not (Pattern.match(str(data['phone']))) or len(str(data['phone'])) != 10: return ('phone', 'Invalid phone!') # for checking Website URL if not re.search(Pattern_1, data['website']): return ('website', 'Invalid URL!') # for matching Passwords if data['pass'] != data['passes']: return ('passes', "Please make sure your passwords match") # Taking input from the user data = input_group("Fill out the form:", [ input('Username', name='username', type=TEXT, required=True, PlaceHolder="@username"), input('Password', name='pass', type=PASSWORD, required=True, PlaceHolder="Password"), input('Confirm Password', name='passes', type=PASSWORD, required=True, PlaceHolder="Confirm Password"), input('Name', name='name', type=TEXT, required=True, PlaceHolder="name"), input('Phone', name='phone', type=NUMBER, required=True, PlaceHolder="12345"), input('Email', name='email', type=TEXT, required=True, PlaceHolder="user@gmail.com"), input('Age', name='age', type=NUMBER, required=True, PlaceHolder="age"), input('Portfolio website', name='website', type=TEXT, required=True, PlaceHolder="www.XYZ.com") ], validate=check_form, cancelable=True) # Create a radio button gender = radio("Gender", options=['Male', 'Female'], required=True) # Create a skills markdown skills = select("Tech Stack", options=[ 'C Programming', 'Python', 'Web Development', 'Android Development'], required=True) # Create a textarea text = textarea("Comments/Questions", rows=3, placeholder="Write something...", required=True) # Create a checkbox agree = checkbox("Agreement", options=[ 'I agree to terms and conditions'], required=True) # Display output using popup popup("Your Details", f"Username: @{data['username']}\nName: {data['name']}\ \nPhone: {str(data['phone'])}\nEmail: {data['email']}\ \nAge: {str(data['age'])}\nWebsite: {data['website']}\ \nGender: {gender}\nSkill: {skills}\nComments: {text}", closable=True)
Producción:
Publicación traducida automáticamente
Artículo escrito por gittysatyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA