Transcripciones
1. Introducción: Hola. Bienvenido a profesional de vuelta en desarrollo Web con Pichon Flask, donde aprendes a construir aplicaciones donde usar el increíble lenguaje Python. Mi nombre es Jorge Escobar, y he tenido suerte de trabajar en las empresas tecnológicas líderes durante los últimos 15 años, y ahora te mostraremos desde cero cómo convertirte en un desarrollador web profesional. Puedes encontrar muchos cursos en línea que te prometen cómo convertirte en desarrollador Web. La verdad es que en la industria tecnológica profesional, no
hay tal cosa como las posiciones de desarrollador web. O eres un desarrollador back y desarrollador o front-end en las habilidades requeridas para cada uno son completamente. Este curso te mostrará paso a paso, las mejores prácticas para comenzar tu carrera para volverse inempleable de nuevo en aplicaciones Web. Desarrollador Te mostraré paso a paso y a través del poder del video sobre introducción toe el lenguaje Python. Cómo instalar Flask, un primer vistazo a las bases de datos de secuela y luego construiremos una aplicación de blogging utilizando las mejores prácticas de
desarrollo. Al finalizar el curso, desafiarás a ampliar la aplicación desarrollando un sistema de comentarios para Blawg. También podrás obtener la base de cancha completa ya que se ve en cada paso del camino para que
puedas desarrollar tus conocimientos mirando cómo crece poco a poco el sistema. El curso es el signo para personas con poco o ningún conocimiento previo de codificación pero están ansiosas por aprender
a construir aplicaciones Web. Todo lo que necesitas es una computadora y la disposición de poner toda tu atención del pie del Metis. Escucha. Existen otros cursos que van por la ruta fácil y enseñan utilizando herramientas gráficas. Te puedo decir, esos estudiantes no sobrevivirían a una entrevista de vida real en un profesional por mi curso ahora, y comenzaré tu camino para convertirte en un arma backend de pitón profesional.
2. ¿Qué es el desarrollo de Backend?: De acuerdo, echemos un vistazo a lo que está de frente y vuelta en desarrollo. Um, para eso vamos a comprobar cómo se ve un proceso de Internet en un nivel muy alto. Um, vamos a un diagrama y y a entender cómo se ven los pasos cuando solicitas una página. Entonces lo primero que debes saber es que siempre hay un navegador y un cliente. El navegador es básicamente el programa que utilizabas para acceder a la Web, el Firefox creció Internet Explorer, lo que sea que uses, y entonces el servidor es básicamente un servicio que está ahí fuera en Internet. Básicamente, um, es un grupo fuera de servidores o computadoras que están, um, ubicados en un específico que estás fuera. Entonces cuando tipoes euro, lo que pasa es el, um, tu proveedor de Internet te
conectará, te dirigirá al servidor apropiado, y entonces ese servidor tendrá un proceso que es un proceso de looping que siempre es chequear. ¿ Hay alguna solicitud hay alguna solicitud? Y cuando recibió tu solicitud de una página específica, ah básicamente renderiza o o se le ocurre el con el código para construir la página que estás solicitando, y para eso se puede acceder a una base de datos donde se encuentra todo este contenido ubicado. Una vez que se encuentra ese Carlton, empaqueta todo eso hasta en una página web en B, lo
devuelve de nuevo al navegador donde el navegador lo renderizará como, ah, tan apropiado. Entonces, ¿qué es el desarrollo back-end frente a él? Desarrollo? Um, entonces la idea es que de vuelta en desarrollo están los procesos o el software, Um, el código y el, um las diferentes rutinas y algoritmos que viven en el servidor, um, y interactuar con el con la base de datos, um, versus el código del navegador, que es el frente. Y el desarrollo hasta el momento en desarrollo implica trabajar con HTML, CSS y Js, que son ah, los
lenguajes básicos , ya
sabes, , ya
sabes,para los sistemas básicos que permiten al navegador renderizar el contenido del está dando vuelta. Entonces puedes pensarlo como frente y ser,
um, um, todo lo que tiene que ver con lo que declina ve y luego de vuelta adentro es todos los datos detrás. Ah, cómo luce esa página. Entonces en este curso, nos vamos a centrar en eso en esa pieza, vamos a estar hablando de cómo codificar um, y Ah, y cómo desarrollar aplicaciones que están escuchando intrínsecamente solicitudes de un navegador y devolver ah código de contenido, si se quiere, que permitirá al navegador renderizar esos datos esa información que se almacena en el Servidor
Indus.
3. ¿Por qué Python?: De acuerdo, Entonces una pregunta que puedes hacer es y Python, donde estamos aprendiendo Typhon o de vuelta en desarrollo y no otra cosa. Y hay un montón de otros idiomas que son adecuados y tienen buenas Ah, ya
sabes, buenas críticas o de sus habladas muy bien en Internet. Y creo que es una decisión personal. Mi experiencia personal ha sido que Python ha sido una muy, um, fácil de aprender, como la curva de aprendizaje no es demasiado empinada. Um, pero también es un lenguaje que es una alegría leer, um, mucho descodificar cuando estás cuando tienes un revestimiento. Carreras se trata de leer el código de otras personas, y Tyson hace que sea realmente fácil de entender. ¿
Qué, qué vara el pensamiento otro cuarto? Um, sólo por leerlo sin siquiera mirar los comentarios, um, o documentación. Creo que, um, ya
sabes, facilidad de
Python es Ah, es rápido. Um, nuevo, hay gente que dice que otras cosas son más rápidas, pero creo que una vez que te metes en la, um, la verdadera Web mawf,
um,
Web um, sirviendo y sirviendo veces y todo lo que creo que hay muchos otros Viable es considerar um, aparte de lo rápido que son los idiomas. Pero haber dicho que Python es Reese es bastante rápido. Um, eso
me gusta. Es, ah, orientado a
objetos desde el principio. Creo que vamos a hablar de un poco. Por qué eso eso es importante. Pero, um, es un primer dedo del pie de introducción. De lo que ese concepto es que tiene que ver con la disposición de tu código de una manera que sea reutilizable y que puedas aprovechar el trabajo de otras personas sin tener que reinventar la rueda. Um, eso es algo así como lo orientado a objetos para mí es, ah, cuál es el beneficio. También, um, ya
sabes, construir encima de esa pitón es muy extensamente tiene mucho apagado, um, bibliotecas de
terceros que pueden hacer lo que quiero decir, hay, como, miles de cosas que puedes hacer con él desde, ya
sabes, como matemáticas, um, cálculos desde enganchar hasta lo más popular que bases aéreas desde, um, ya
sabes, interactuando con plataformas sociales como Facebook, Twitter y ah, ya
sabes,
Ah, Ah, mucho fuera proyectos muy,
muy emocionantes que,
um que están a través de eso creen a través de campos fuera diferente, cosas diferentes, como de juegos a, como, científicos a negocios. Por lo que tiene mucho fuera de bibliotecas, y la comunidad alrededor de Python es muy, um, muy fuerte. Son muy apasionados por teléfono, y se escuchará de un poco de las rivalidades, sobre todo con la gente que eso, como Ruby on rails, que es como un ah, grande, um, es una contraparte o competencia para Python. Entonces ya
sabes, hay que conocer comunidad de jazz también apareciendo. Pero es un es una competencia amistosa. Creo que, um, ya
sabes, cada lengua tiene sus propias fortalezas y sus deficiencias. Pero me gusta Python. Me sentí muy como en casa. Um, vengo de, ah codificando en riesgo y luego mear. Es B y,
ah, ah, ahora pitón. Me gusta que miro hacia atrás y va a ser muy difícil para mí volver a otro idioma
4. El Enfoco de FromZero: Hola. Yo quería hablarte un poco de por qué es de cero diferente o mejor que otros cursos? Bueno, primer lugar, tengo experiencia con proyectos complejos. He estado trabajando tanto con grandes empresas como starups, y he completado mucho fuera de tráfico alto y respuesta rápida, proyectos
muy complejos que tienen,
um, um, decenas de desarrolladores cometiendo y contribuyendo. Entonces conozco la mejor manera de,
um,
acercarme a um, un proyecto y hacerlo eficiente, escalable. Entonces te voy a enseñar todas esas cosas que yo sé. Um y, um, una cosa que yo siempre me estoy esforzando por hacer estos cursos es guiarte a través de lo básico. Ah, o empezar con lo básico. Y luego queremos avanzar en los temas de la manera más eficiente. Yo e No voy a entrar en pequeños detalles o tal vez ir por todos los, um, todos los capítulos de un por ejemplo, libro de
Baekeland. Pero voy a pasar por la forma más eficiente para que puedan ponerse en
marcha y listos para el desarrollo. Um, también
voy a estar enseñando esto nosotros curso manos a mano en todos los cursos. Eso significa que siempre vas a aprender haciendo y no solo sacando mucha
información de los proyectos o de los cursos o de los idiomas antes de hacer realmente cosas. Entonces va a ser muy mano, y no lo voy a endulzar. Um, será que te voy a enseñar de la manera difícil. Lo que significa que no te voy a enseñar, por ejemplo, cómo usar mi secuela o una base de datos usando un coolie como PHP. Mi administrador. Esa es otra forma en que lo hacen los desarrolladores profesionales. Entonces no voy a seguir adelante y sólo te enseñaré algo Eso es E. C. Porque es fácil para ti usarlo. En realidad vas a aprender las herramientas de la forma en que los desarrolladores profesionales lo hacen en las startups tecnológicas
líderes. Por lo que espero que te unas a mí y que disfrutes de este curso sobre bono. Estaré ahí para asistir en cada paso del camino. Um, por
eso deja que todos los demás estudiantes, pero te puedo prometer que vas a aprender, pesar de que en algún momento va a ser difícil, Um, vas a aprender de la manera correcta, y estás va a ser un desarrollador web profesional en poco tiempo
5. Introducción a Cloud9: Entonces ahora vamos a hablar de cuál es el entorno de desarrollo que vamos a utilizar. hice algunas búsquedas y decidí finalmente ir por Cloud nueve. Entonces Cloud nueve es básicamente, ah, entorno de desarrollo
web. Piénsalo. Digo tu servidor en la nube. Puedes agregarlo codificando, y puedes iniciar bases de datos y funciona en base a una tecnología de todos modos, que es Doctor Um así que creo que es Es ah, es una gran manera para
que aprendamos a codificar sin, um, tener que instalar cosas, instalar python. Y si tienes si has visto algunos de los cursos que
tengo, siempre entro, como cómo configurar el dedo del pie. Ya sabes, los diferentes entornos y las bases de datos y todo eso. Pero encontré que los estudiantes, porque eran como empezar a aprenderlo, era como una molestia adicional para que aprendieran a configurar, ya
sabes, Windows, Paice, dueño o Mac por teléfono, y luego la base de datos y todo eso. Por lo que he decidido empezar a usar Cloud nueve como el entorno de desarrollo para todos mis cursos , y va a ser bueno porque básicamente vamos a poder instalar y poder codificar y trabajar en esta plataforma sin tener que instalar cualquier cosa en nuestras computadoras. Y no importa para qué sistema operativo tengas si es Windows o Mac, básicamente
tendrás un lean it es máquina funcionando en,
um,
en la nube, la nube, y podrás editar y trabajar en tu aplicación dondequiera que estés. Um, lo bueno es que son son modelo de precios. Tienen un nivel gratuito aquí, como se puede ver. Y, ya
sabes, básicamente
puedes registrarte, solo ingresa tu nombre de usuario y contraseña, y tiene algunas características bastante geniales como, um, codificación
colaborativa. Entonces, por ejemplo, puedes, ya
sabes, llamar con otro amigo tuyo u otro estudiante sobre ti podemos instalar base de datos y conjunto de frameworks sin ningún problema. Entonces creo que va a ser una buena cosa para nosotros usarla. Y lo vamos a repasar, um, un poquito nosotros. Empezamos a hacer los puntajes
6. IDE de aspecto más: De acuerdo, así que vamos a familiarizarnos un poco con diferentes áreas fuera de la nube nueve. Entonces primero te diriges a ver nueve puntos io, y básicamente puedes hacer click en probado ahora para registrar, um, tu nueva cuenta. Um, una vez que hagas clic ahí, puedes registrarte con. Si tienes una puerta, tienes cuenta o una cuenta de cubo grande, puedes registrarte con eso. Todos los que puedes elegir un nombre de usuario y correo electrónico y una contraseña, y seleccionar aquí para que puedas obtener, como, una captura y luego crear tu cuenta frecuente. Como dije, tienen ah cuenta gratis aquí. También tienen,
como, como, algunos oídos de cuenta pagada pagada. Pero para los efectos de este curso, no
necesitas realmente meterte en un curso de pago. O sea, cuenta. Entonces voy a iniciar sesión con get hub. Y cuando cuando inicias sesión o te registras, obtienes básicamente esta área, que es el tablero, y tienes lo que llaman espacios de trabajo y espacios de trabajo. Piensa en ellos como proyectos básicamente diferentes y en realidad son básicamente ciertos, como servidores separados que estás creando con aplicaciones en él. Um, así que inicialmente obtienes este espacio de trabajo de prueba, y luego puedes crear uno nuevo, que es lo que vamos a hacer cuando iniciemos nuestra primera aplicación de matraz. Pero veamos qué sucede cuando se selecciona ese espacio de trabajo existente. Pero antes de que lleguemos, si haces clic aquí en el nombre fuera del espacio de trabajo, básicamente
tienes la capacidad desactivada. Al igual que hacer algo de edición se puede tener. Ah, verás una leerme. Tendrás los archivos que hay ahí dentro. Um, para que puedas echar, como, un vistazo rápido. Leigh, Léame. Um está aquí en esto en este proyecto de prueba, y aquí hay uno muy interesante. Tienes miembros y en miembros básicamente puedes invitar. Si has invitado a gente, las puedes ver ahí dentro, um, para invitar a la gente, necesitas estar dentro del fuera del proyecto real. Pero también verás cuánta CPU usando cuántas, cuánto del ram y cuánto del almacenamiento estás usando. Y tienen. Para el nivel libre, puedes tener hasta una CPU 512 megs de ram y un disco duro gigabyte, que es más que entonces generoso me encuentro,
um, um, pero ahora que sabemos más o menos, ¿de qué se trata eso? Como dije, clic en el nombre en sí. Verás esas esas esas estadísticas. Pero para que realmente empecemos a hacer cosas,
haces clic en este botón verde abierto. Entonces una vez que hacemos clic en abrir aquí, bueno, nos van a tomar del pie lo que se llama el I. D o el entorno de desarrollo integrado. Y básicamente, esto es algo así como un editor de código también tiene, como, un terminal aquí para el servidor. Y tienes un básicamente un navegador de archivos, como te puede gustar, reconoces desde un tipo similar de aplicaciones, como coordinadores O, ya
sabes, incluso como, ya
sabes, trabajo o editores. Pero, ah, aquí básicamente puedes navegar lo que hay en la carpeta. Ahora mismo, sólo
tenemos este expediente léame MD a un costado. Aquí tenemos básicamente, puedes editar. Um, sabes algo y también tienes una función de deshacer, si quieres. Um, comparte como muchas de las cosas que tienen los coordinadores normales, así que es Está muy, muy bien construido, Tiene mucha capacidad fuera. No estás regalando mucho,
um, um, poder porque estabas usando este ambiente desintegrado Ah, de
desarrollo. Y aquí el fondo. Tenemos la terminal, y esto es algo que siempre me gusta obligar a los estudiantes a que se familiaricen
mucho porque básicamente es la forma en que interactúas más con sistemas a los que
no queremos acostumbrarnos a usar como, cosas
gráficas. Queremos estar muy cómodos con el con la terminal. Si hace clic en este pequeño tipo de función de ventana aquí, obtendremos un, uh, un editor independiente. Y puedes minimizar de nuevo haciendo clic en eso, um en eso se parece. Y 11 importante que quieres recordar es el escape de control, que básicamente muestra y esconde que esa terminal de ida y vuelta. Um, también
puedes, como, agregar tops aquí, por ejemplo. Puedes agregar un nuevo like y creo que cuando lo hayas abierto por primera vez, lo
verás en el editor JavaScript necesario. Normalmente lo cierro porque no es algo que vamos a estar usando, uh, para este curso, así que puedes seguir adelante y cerrarlo, pero puedes tener otra ventana terminal. Digamos de Ah, con otra carpeta abierta o cosas que quieras hacer un oleaje. Pero en cualquier caso, um, es ah,
es un ambiente muy bien integrado y lo que vamos a ver a continuación es alguna función
terminal básica para que ustedes se familiaricen mejor con los comandos de terminal y cómo copiar y navegar directorios y cosas así.
7. Comandos de Shell: ¿ Entonces la estrella jugando un poco con la terminal? Um, he modificado a los que llaman como podemos ver aquí, Um, yo voy a Ah, tú vas aquí a Preferencias, y luego vas a, uh, terminal aquí. Y luego pongo el fondo más frío pinchando aquí a negro para que básicamente puedas poner
cualquier combinación de colores. También aumento el tamaño del teléfono a 18 para que ustedes puedan ver un poco mejor. Um, y cierro eso y luego déjame ponerlo en pantalla completa y empezar, um, haciendo algo básico un hombre para que te familiarices con cómo, básicamente nuestra ropa, um, manejo de
archivos y y comenzar a trabajar. Entonces lo primero que vamos a buscar es que queremos saber dónde estamos en un momento dado. Y para eso utilizamos un químico PWD, cual está presente directorio de trabajo. Y aquí está Dice que estamos en casa boom al espacio de trabajo. Ya ves, los chicos entienden. El hogar es básicamente la carpeta donde se colocan las cuentas en las que se colocan las cuentas de usuario . Entonces si tuvieras otro usuario frío, ya
sabes Jorge, sería slash home slash Jorge, y eso se llama Directorio Inicio para ese usuario. Y esto todavía el básicamente representa eso. Entonces si estás en alguna que diga que nos mudamos a cualquier otra carpeta, um, podemos volver rápidamente haciendo CD, que es cambiar directorio y poner eso hasta que estén ahí. Nos llevará de vuelta al directorio de inicio. Um, entonces y en la nube nueve, hay un Hay una carpeta de espacio de trabajo, que básicamente es donde se almacenan los proyectos. No tengo problema con eso. Normalmente cuando trabajo en Lenox,
tengo, um, um, realidad trabajé con el directorio O. P. P.
T. Pero el espacio de trabajo funciona bien,
así que otra vez para hacernos saber dónde estamos en PWD. Entonces estamos en el hogar Bhutto, que es el usuario que ese Chlo nueve te asigna automáticamente cuando cuando seleccionas el hueso al entorno y luego espacio de trabajo, que es un directorio
donde, donde estamos. Entonces veamos cómo podemos ver cuáles son los contenidos del directorio. Y ese es básicamente el comando ls So ls nos mostrará qué archivos hay en ese
directorio actual . Y así, como pueden ver, nos hemos leído dot MD, que es que Léame archivo que vimos en el editor antes. Um, ahora, digamos digamos que queremos crear un nuevo directorio dentro del hogar. Un boom al espacio de trabajo. El comando para eso Es hacer directorio M k el I r. Y digamos que creamos una prueba de goteo directo. Um, Ahora, si lo hacemos Va a ver que me hemos leído. Y luego tenemos un directorio llamado Test. Entonces para que cambiemos el directorio, metamos dentro de ese directorio usamos CD y luego probamos. Un truco que ustedes chicos quieren saber es que se puede poner el primero, como letras fuera, básicamente comandos y directorios y todo eso. Y luego si presionas la pestaña, verás que se completa automáticamente a lo que sea,
um, um, las mejores coincidencias en si sigues pulsando pestaña, sigues viendo a través de esas cosas. Entonces si yo Si sí veo el r y luego doy clic en pestaña, verás que,
um, um, debería
conseguirme el dedo del pie. Ya que no estoy en la Marina, el espacio de trabajo. Entonces, ¿qué? Básicamente, conseguirás el léame vacío, pero voy a ir al así si lo hago ¿Ya lo verás? Léame ahí, um, sobre voy a cambiar al directorio de pruebas aquí. Entonces ahora mismo no hay nada ahí dentro. Um, lo siguiente que vamos a hacer es usar un toque frío común y el tacto es útil para crear directorios vacíos. Al igual, si solo quieres crear un
archivo rápido, um, um,que no tenga nada en él. Entonces podemos hacer, Digamos, prueba prueba, no txt. Um, si haces un menos ahora, verás que, um, hay un txt de prueba ahora ahí dentro. Entonces ese es un comando útil para el que lo vamos a usar. Hay un, um hay un nombre de archivo llamado Any P Y que usamos para inicializar directorios ya que los módulos para python ball obtendrán los dedos que rápidamente. Si quieres despejar la pantalla encendida, vuelve a la parte superior. Utilizamos un comando claro, y eso nos pone con un claro con una pantalla clara. Um, algunas otras cosas útiles. Digamos que tenemos Ah, el directorio de pruebas. Aquí. Vamos a crear otro directorio llamado test. Um, en Digamos prueba en. De acuerdo, entonces ahora tenemos Ciudad tastica y luego otra carpeta. Pensamos que, um, prueba de
frío en. Entonces digamos que quiero mover esa carpeta. Es decir, esa cuchara archivada que es punto txt dos. Su prueba en uso el comando M V, que es mover, y básicamente voy a mover prueba el txt a, ah, prueba en directorio. Entonces yo hago eso. Entonces me muevo. Estoy diciendo mover prueba txt a dentro de la prueba de directorio en efecto presionar enter there. Ahora, si hago una última, verás que ya no tenemos txt test, y está en prueba en. Pero, ¿cómo me reviso sin tener que ir otra vez? Al igual que hacer pruebas sórdidas En realidad puedes hacer l s y luego escribir el nombre de un directorio. Y si presionas enter, verás los contenidos fuera de ese directorio dentro de, um, esa esa carpeta que has seleccionado para que no tengas que ir dentro de ella. Entonces esa es la jugada, Comando. Um, también
hay, um, un comando muy útil llamado Cat. Volvamos a la carpeta de inicio y luego al espacio de trabajo. Entonces, ¿ves cómo hice eso? Um, um, ahora
estoy en el espacio de trabajo del dedo del pie del homeroom, así que hay un gato químico y gato básicamente te permite ver el contenido de un archivo rápidamente sin tener que, um, abrir teatro o cualquier cosa. Solo quieres,
como, como, tomar unas tierras rápidas. Entonces ahí tienes. Entonces si no puedo leerme, veo el contenido del archivo sin tener que ir al al editor. Um, si tenemos un archivo largo, también
podemos usar un comando borrar la pantalla llamada mas. Entonces si hago mawr y luego me leo, um, básicamente
va a Pagine ocho porque este archivo se puede ver dentro de una sola página. No hay un todo mucho fuera de uso para ello. Pero si escribes más y había más de una página, básicamente
puedes ver el contenido del archivo de manera paginada. Um, uno más útil se llama hombre y hombre. Es como el manual para que puedas ver las opciones que tienes para cualquiera en
comandos UNIX o Linux . Entonces digamos que si escribo man CP, puedo ver el Aled las opciones que tengo para el comando para la copia y puedes presionar flecha
abajo o flecha arriba para verlas. El expediente. O también puedes presionar la tecla de espacio y luego paginado por página. Cuando quieras salir, solo
tienes que pulsar la cola, la letra de
la cola y se va a volver a salir. Entonces, um y eso es lo que básicamente, está usando el mando más, que te estaba diciendo antes. Um, de lo último de lo que quiero hablar es del comodín. Entonces si eso tienen, vamos a la carpeta de prueba y digamos,
déjame crear rápidamente, eso son dos puntos txt y luego prueben tres puntos txt. Y hay algo llamado Wild Car, que es el asterisco. Um, y es un querido mover rápidamente un montón de archivos que comenzaron con prueba. Si sí me muevo, Test star o ASA es la T Eckstine y los quiero en la prueba en carpeta, ese culo teres va a decir,
OK, OK, cualquier cosa que tenga que comience con prueba, pase lo que pase, uh, letras o números vienen después y después de eso, un punto y txt se van a mover. Entonces si presiono entrar ahí, verás que, um, no
tengo la prueba. Um, ya
conoces archivos, y todos están en la prueba en carpeta. Entonces esa es una mirada rápida a los comandos de la terminal, y hay muchos, muchos más. Y hay, como diferentes banderas que podemos poner, que son como parámetros para esos comandos. Pero estás aprendiendo ellos culo te como los usas Azaz. Pasamos por el curso 30, pero por ahora, eso es Ah, esa es una introducción muy rápida a los comandos de la terminal.
8. Python Shell: Entonces empecemos a jugar un poco con Python y vamos a usar la terminal de nuevo. El tiempo maximizará esto aquí. Um, con la nube nueve, tenemos una opción de usar deportes por Thorn para y comprar de tres por teléfono a sigue
muy en uso porque hay algunas bibliotecas que aún no han sido portadas para comprar de tres . Pero yo diría que en estos días, la
mayoría fuera del descanso, han actualizado las bibliotecas y marcos útiles o más comunes. Entonces definitivamente estoy empezando. Y empezaría a usar python tres desde este punto en adelante, Um y ya sabes, es ah, Es algo bueno que empecemos a usar por desde tres proyectos hasta, um tipo de mover nuestra comunidad o comunidad python hacia eso, esa versión más nueva. Entonces la forma en que accedemos, si solo usamos python como este, vamos a usar básicamente vamos a estar usando Python 2.7, que es la última dos versión que puedes hacer dash V para ver para comprobar la versión de la misma. Entonces como puedes ver por teléfono, 2.6, 2.7 punto seis quiero decir, es lo que obtienes de python Pero también podemos usar Python tres solo escribiendo por desde tres, y luego verás que tenemos 3.4, que es el última versión por teléfono. Entonces eso es bueno. Entonces, um, hay una manera de jugar con mi iPhone y eso es a través de la cáscara de python. Y la forma en que haces eso es que solo usas tu estado por teléfono o por desde tres y luego presiona enter y entrarás esta Ah ah, básicamente, uh, terminal, donde puedes jugar con y hacer, como, pequeño tipo de funciones y llegar a conocer mejor por hijo. Entonces, empecemos a hacer algunos comandos y empecemos a jugar con él.
9. Funciones de Arithmetic: De acuerdo, lo primero que vamos a hacer es, um, usar por teléfono como calculadora. Sí. Entonces te haces una idea de qué cosas podemos hacer. Um, si tipeo a través de más tres, me dan cinco. Entonces, ya
sabes, eso es, ah, cosas
básicas ahí dentro, pero, sí, tienes una idea de ello. Por lo que tres menos uno es para la multiplicación. Se utiliza para protagonizar tres veces ocho para división utilizada para recortar 10 dividido por dos. Ah, Algo que notarás es que en esta operación conseguimos un lo que se llama número flotante . Por lo que no fue cinco cuerpo entero era de cinco puntos. Ah, eso es porque mi familia básicamente es como,
uh, uh, adelantando o pronosticando que podrías conseguir no, um, número
entero. Entonces si lo hacemos entonces divididos por tres, obtendrás 3.3333 que es, ya
sabes, el número flotante. Um, también
podemos hacer, um, exponencial haciendo dos asteriscos. Entonces al poder de tres es ocho. Um, y también se puede conseguir el módulo es cual es el recordatorio de una división. Entonces 10 módulos, tres iss uno porque ya sabes, 10 dividido por tres es tres y luego te dan uno más como el, um, parece arduo. Um, lo último aquí es como podemos,
um, um, agrupar términos juntos porque generalmente las divisiones y modificaciones vienen antes de la subestructura y además, por ejemplo, si hacemos dos más tres, uh, cinco. Lo que verá aquí es que la multiplicación viene primero, por lo que son 15 y luego se sumará a dos, que son 17. Pero si quisiéramos hacer los dos más tres primero pones un paréntesis ahí y luego en
eso en ese caso se sacarán dos. Además tres es cinco veces cinco es 25 así que eso es algo así como funciones aritméticas básicas.
10. Variables: un concepto clave en por teléfono y en otros idiomas es el concepto de variables y
zar viable básicamente cajas donde se puede almacenar, um, algún valor en él. Y entonces podemos referir ese valor a partir de ese nombre de casillas, por así decirlo. Entonces digamos que si tengo, digamos, un viable llamado X, le asignas un viable usando el comando igual, y luego haces tres. Por lo que a partir de ahora, X es igual a tres. Para ver el valor de un viable, puede usar el comando prin. Entonces sí imprimir ¿Estaban espiando esta temporada? Python tres solía ser impreso con aprendices X en python a Así que ahora obtenemos el valor de la misma . Um, porque es un viable podemos cambiar el valor cuando queramos. Entonces ahora si hago X igual a cuatro y hago la impresión de la misma, obtendré el do el nuevo valor. Entonces como puedes ver, puedes cambiar um, los valores fuera de una viable religiosamente Um, también
puedes una señal decir que tenemos otra llamada viable. ¿ Por qué? Y también podemos entonces ahora un seno x igual a por qué? Y que todo eso le asigne el valor de X toe el valor actual de por qué, Y ya veremos por qué digo eso. Entonces si hago imprimir exe ahora ves que me dan siete. Pero si cambio, ¿por qué dedo del pie 10? ¿ Qué opinas? El valor de exceso del valor de X sigue siendo el valor antiguo. Porque esto se pasó como un valor y aviso de referencia del dedo del pie el valor. Entonces a para que yo cambie el valor de X, necesito, como, reasignar x igual. Por qué X es igual a y. y entonces si hago X ahora, obtener el valor actualizado. Um, y por supuesto que puedo. Algunas esas variables, um, explosivas y equivale a 20 um, y ya sabes, hacen multiplicación es y todo eso. Um otra cosa interesante es que también puedo un signo, uh, cuerdas a viables. Entonces si hago eso, digamos, ahora Z es igual a hola. Um, si rezo y veo aquí Ah, ya verás que tengo Hola allá. Y, um, si tengo otra, es una Z Z igual a mundo. Si tipo c más zzz, ¿qué pasa? Hay una concatenación. No va a sumar los valores de la misma, pero sólo va a contaminar las cuerdas. No obstante, note que no tenemos espacios en el medio, cuál es usted sabe qué? Básicamente se lo estamos diciendo al yo. Remídannos para poner un espacio. Tendríamos que hacer algo yo z más cotizaciones más c z. y luego nos dan el mundo hola adecuado. Um, una cosa que no puedes hacer, es en una cadena a un número. Tenemos un error ahí porque necesitamos,
um, um, básicamente convertir ese de, ya
sabes, el dedo Z. Ah ah número que no es posible. Pero por ejemplo, si Z era un derecho y C c watts igual a dos, si hago C más fácil, obtengo esa era. ¿ Verdad? Pero si hago final de Z, eso es básicamente convertir ver en un entero y luego hago más fácil, Entonces no obtengo el resultado adecuado. Um, así que eso es más o menos una introducción a los Virales. Los vamos a usar mucho, así que vamos a familiarizarnos bastante con ellos mientras pasamos al curso
11. Tipos de verificación: una forma de comprobar el tipo apagado, viable o el o el número, no el número sobre el, um el término que eres que tienes es a través del hombre Taiko. Entonces, por ejemplo, si escribo uno, dice, es ah, es un tipo off entero. Entonces básicamente es, ah, es un número entero. Si no escribo 1.0, entonces tipo me dice que es un flotando ellos. Eso significa que tiene, ya
sabes, decimales en ella. Um, si hago X es igual a cinco y luego sí escribo X, es como es un entero porque es que lo está asignando a, um a un número entero. Entonces eso significa que lo viable es hereda el tipo off, el off el valor en Si cambio eso a una cadena. Um y luego vuelvo a hacer tipo X. Yo consigo, ya
sabes, las nuevas clases nucleares. Es una cuerda. Um, una cosa que te has dado cuenta tal vez es que puedo presionar el tipo la flecha arriba y abajo para especie de como pasar por la historia así no tengo que,
como, como, cosas
retiradas otra vez. Um, y una vez más, ya
sabes, si sí escribo. Hola? Que es una cuerda voy a conseguir tipo fuera de fuerza. Entonces eso es algo útil. Dedo del pie Conocer y aprender. Um, cuando quieres, como saber qué? ¿ Qué? El tipo off un viable que no sabes exactamente qué es? Um, um, algo así como es Andi. Escuelas celebran como tú ves. Muy. Dice clase, nos vamos a meter a clases en más adelante en esta sección.
12. Formato variable: una cosa a la que quieres acostumbrarte, um o saber es algo llamado Pep ocho. Entonces si vas a Google y solo buscas ocho,
um, um, y pies Python por si acaso verás este hoyo ocho,
um, um, pauta. Y básicamente está el tipo de estilo para el conjunto, como por codificación telefónica. Y eso incluye, como, ya
sabes usar código usando grifos o espacios. ¿ Cuál es la longitud máxima de mentira? Y básicamente pasa por todas las convenciones para, um para esas, um, ya
sabes, funciones. Ah, son cosas que normalmente hacemos cuando yo base diaria. Entonces cuando tienes una oportunidad y tienes, como, ya
sabes, estás teniendo un almuerzo largo y quieres acostumbrarte o familiarizarte con todas las recomendaciones por cómo sabes que escribimos código en python, entonces definitivamente deberías leer esto. Um, pero en cualquier caso, um, volviendo a las variables para los objetos de valor, usamos básicamente números letras y subrayados, um, así que básicamente, conoces una buena noma Bueno. Ah, nombre
viable es, um ya sabes mi var Sony utilizo un guión bajo cada vez que tengo espacios ahí dentro, así que no hago esto. Mi bar, um o hacer mi barra de mayúsculas, que es algo que celoso rechaza. Um, así por otra cosa es como tratar de hacer nombres viables como se explica, explícitos lo más posible. Al igual que hacerlos significativos. No hagas como,ya
sabes, ya
sabes, X X. Como estaba haciendo zzz antes Eso fue, eso fue, eso no es una buena práctica. Si eres como escribir un proyecto riel, es mejor poner,ya
sabes, ya
sabes, base de datos, um, um, valor de
índice versus igual que DB I, ya
sabes, tratar para usar nombres explícitos, cosas que puedes. Personas leyendo el código. No puedo entender qué es lo que está pasando. Um, también
hay como un uh, no
lo es. Nada de esto realmente se hace cumplir, pero es de nuevo lo que dicta Bebe. Tenemos una constante, que significa que es un número que nunca va a cambiar. Utilizamos todas las gorras. Entonces, por ejemplo, um, bahías de
datos ah, nombre, por ejemplo, es igual a prueba. Entonces eso es algo así como que es una buena práctica tener gorras, porque eso significa cuando la persona o el desarrollador que lee el código mira eso, él sabe. Ah, esto es algo que no cambia a lo largo de la base de código es Ah, es un gato, es Ah, es capital de la vida. Entonces eso significa que no va a cambiar, Um, pero hay todas las cosas que definitivamente debes mirar y echar un vistazo a permear cuando tienes una oportunidad porque es, ah, es útil para ti para familiarizarse con ello.
13. Cuerdas: Echemos un vistazo a algunas funciones de fuerza. Y, um, y ayudantes. Um, las cadenas se pueden expresar como comillas como X igual hola o como solteros xolo. Algo a saber es que las cuerdas son básicamente un aumento, y vamos a ver un aumento, que en pastel trueno listas frías en un poco más de detalle después. Spot básicamente piensa en Honore como una colección de personajes individuales. Entonces lo que eso significa es que si lo hago, digamos X off cero. Eso significa que voy a sacar el primer personaje de la cuerda. Si hago X fuera de uno, obtengo el segundo. Entonces como puedes ver, básicamente
es una colección o matriz fuera de las cuerdas. H e l l O. Y eso es algo para recordar cuando puedes algo
así como, así como, sacar las, um, ya
sabes, subcuerdas de una cadena poniendo un rango fuera de los caracteres. Por ejemplo, si hago cero llamando tres, sacaré el 1er 3 caracteres de esa cadena, Um, la misma manera. Si hago de tres a cinco, obtengo los dos últimos personajes. Um, la cosa es, um, como estábamos viendo antes, podemos estafar tarjeta innata a cadena. Entonces si a por qué igual? Eh, entonces podemos hacer explosivos. ¿ Por qué? Y e get Hola, Paul. Um, si queremos hacer, como, el espacio entre la herramienta simplemente inserto ese espacio ahí dentro. Um, podemos convertir, um, una cadena que me refiero a un número toe a stream mediante el uso de la función str. Entonces, por ejemplo, si tengo, es una c igual a tres. ¿ Recuerdas cómo dijimos que no podemos venir cortada en ocho? Um, el entero y un número si querías saludar, Uh, tres. Haríamos X plus str off three off z. Así que str convertirá el número tres, que es un entero para nosotros fuerza y sus obras. Si querías lo contrario, ¿recuerdas? Como si quisiéramos tener una cadena que fuera, um, básicamente un número queremos obtener el valor de la misma. Entonces lo hacemos I nt También hay algunos métodos que podemos usar que ya están integrados en las cadenas. Por ejemplo, si quisiera tener el hola todo en mayúsculas, haría oferta x punto y, um off Eso no tiene mucho sentido, supongo. Um, digamos por qué no ofrezcamos y veremos a Paul todos en gorras y quiero que todos sean más
bajos que nosotros X off más bajo. Entonces hay más métodos como ese. Pero te sacas una idea de algunas cosas que quieres, uh ya sabes, ahí hay cierta mi pie. Entonces puedes que puedas usar y uno menos que usarás a menudo es Len, que es lo que es la longitud de una cadena específica. Entonces, Len fuera. ¿ Por qué son cuatro que es Paul? Um, entonces, ya
sabes, echa un
vistazo a las operaciones de cuerdas. Cuando tienes tiempo, hay muchos de ellos, pero estos son como los que más se usan después.
14. Listas, tuples y Dictionaries: Entonces echemos un vistazo a tres. Um, tipos
muy útiles fuera de variables cuando se llama listas. Um, lista es básicamente una ah, una lista de valores que pueden ser números o cadenas o ambos. Entonces digamos que X es uno común para venir en tres. Um, y los cierras con corchetes, y eso significa que esa es una lista. Por lo que cada exe de impresión se obtiene toda la lista incluso para obtener tipo X, obtiene la clase de tipo es lista, um por lo menos son muy útiles si tienes, ah, Se
obtiene la clase de tipo es lista,
um por lo menos son muy útiles si tienes,
ah,
básicamente un ordenado o en orden tipo de menos de valores que son, um necesitas obtener acceso a. Y muchas veces, las cosas que vienen de como la base de datos se devuelven a medida que levantamos. Entonces quieres, como, poder mirar a través de ellos y conseguir su viables sus valores. Una cosa que puedes hacer es recorrer una lista. Um, pero eso es algo que vamos a ver un poco más tarde. Um, otro tipo, um, u otro, uh ,
sí, especie de almacenamiento diferente. Um, Función o o o clase es Stupples y Topolsky se utiliza básicamente con partes. Por lo que puedes hacer ya sabes, X equivale a una coma también. Y eso es un Topol. Entonces si lo haces tecleando X, obtienes un Topol. Entonces una cosa que separa la lista de los dos polos es que no se puede ni una vez a la policía, encuentran que no se puede actualizar los valores. Por lo que piensa en un Topol como una constante de, ah lista constante o una lista estática que no puedes cambiar después. Um, para obtener tanto un triple como un valor de lista en una posición específica. Lo haces básicamente, um, x off. Digamos el índice así que en realidad X off cero, ¿
cuál es este Topol? Es una x de uno es a Así que es ah,
siempre es que siempre empiezas el siguiente en cero algo que a veces olvidamos, Um y qué? Básicamente, se
puede obtener cualquiera de los valores fuera de eso de esa lista o para tirar usando esa notación. Entonces digamos que, um, queremos dedo del pie. Yo quiero mostrarles cómo el podemos cambiar el valor fuera del arrendamiento, pero no de un Topol. Así que el hallazgo que ex otra vez como 123 Si hago X off, uno es igual a cuatro ahora si I Si imprimo exe, ver que acabo de reemplazar Eso ganó el segundo valor 24 Pero si hice este Tupelo 1 a 3 y te darás cuenta de que puse una coma después de lo peor, esa es como la forma en que trabajas con derrumbes, tienes que algo así como terminó con el coma, pesar de que no estás poniendo un valor ahí. Entonces si hago por qué fuera uno igual a cuatro, entraré ahí porque no hay asignación de ítem en los totales. Um, el último tipo que vamos a ver se llama diccionarios y los diccionarios son básicamente valor
clave, Um, objetos. Entonces, básicamente, si lo hago, digamos, uh, primero primero es Jorge y luego último ISS Escobar. Y luego usé corchetes de Carly para esos, así que dicen es un diccionario y la forma en que lo refieres en lugar de hacer X off zero, lo
que harías en una lista, haces X off primero, y eso devolverá Jorge. Muchas veces estos se llaman objetos. Diccionarios se llaman objetos porque es algo así como el primero en el último son propiedades de ese objeto. Y, um, y sus valores son los que pones después. Um, lo último que queremos ver es,
um, um, puedes hacer una lista fuera de diccionarios, que es algo que verás mucho cuando estés interactuando de nuevo con bases de datos . Entonces, por ejemplo, digamos que tenemos, ya
sabes, usuarios iguales y entonces tenemos, um digamos, ah, vamos a encontrar otro usuario. Nosotros, uh, por qué iguala primero a Paul. Ah, y luego el apellido es, uh, Gram. Por lo que ahora puedo hacer usuarios igual a ex calmer. ¿ Por qué? Entonces esa es una lista de usuarios. Si imprimo uh usuarios. Veo que tengo todos estos objetos ahí, y algo que te darás cuenta es que como set al diccionario primero iguala polo y gramo de Lasse. Pero ahora es imprimiendo. Último primero y 1er 2do Eso es algo que no se puede controlar en diccionarios. ¿ Tres ordenando el apagado de la llave? Um, fuera de las llaves. Um, y es tienda básicamente al azar en python. Básicamente, no
hay garantía fuera de eso apagado. Ordenando el apagado esas llaves. Um, pero hay cosas que puedes hacer para algo así como manejar eso Compró algo para te guste siempre. Recuerda
15. Fecha y hora: Python tiene grandes funciones de control para fechas en el tiempo. Um, de
nuevo, hay mucha información, pero veremos algunas cosas, como, como,
realmente simples que puedes hacer. Entonces lo primero que quieres hacer es importar diurna, que es una cobranza fuera de fecha y hora, um, funciones y utilidades, Por cierto, no
hemos visto esto antes, así que importa básicamente significa, ya
sabes, cargar la memoria del dedo del pie, este módulo específico. Y así es mucho como funciona Python. Es,
um, um, básicamente, importas o compadeces anuncio alguno de las bibliotecas o utilidades que tienes en tu en tu sistema falso. Pero no necesitas,
como, como, tenerlos todos cargados a la vez. Entonces así es como tú, ya
sabes, eliges y eliges qué utilidades vas a estar usando en un archivo específico. Um, y vamos a ver mucho fuera de esos asnos. Nos metemos en el al curso, pero ahora, después de presentador, tengo todas estas funciones diurnas a mi disposición. Pero cuando vamos a ver es como, um, es esto llamado diurno, uh, diurno ahora, y lo que eso significa es que si imprimo que consigo un estado, que es, ya sabes, hoy, estado y la hora. Um, ahora mismo, apagado, apagado, fuera de la computadora. Um, así que básicamente, ya que CLOUD9 opera en la nube, creo que esto ya se dice a, um dos UTC, que es básicamente el, sabes, tiempo
universal o verde cada vez como un Así que has podido haber escuchado. Um y esto es tener muy buenas prácticas. Nunca usaste la tienda local del dedo del pie como tus sellos de tiempo porque, um, vas a ser básicamente, los usuarios van a estar en diferentes zonas horarias, y no quieres estar haciendo conversiones. Um, después de los datos que el esposo almacena. Entonces recuerda, esta es una regla de oro. Almacene siempre la hora o las fechas en la base de datos como UTC. Pero ¿vamos a ver qué? ¿ Qué? Cómo hacemos eso por ahora. Digamos que esta es la hora local. Entonces si lo hago ahora, um, es un tipo apagado. Ahora verás que es nuestro datum diurno de tipo apagado. Um, pero ahora puedo sólo cosas como ¿Por qué no año? Um oh, lo siento. Ahora el año y ya verás que me dan el año para esa fecha. Y puedo decir ahora que nuestro me voy a decir la hora. Entonces, ya
sabes, básicamente
puedo,
um, um, ser capaz de remolcar barras. Diferente diferencia. Diferentes partes de eso fuera de esos datos. Um, ya
sabes, para que iniciemos el UTC correctamente, necesitamos importar este específico,
um, um, clase o función ical diurna desde el datum de importación diurna. Y ahora lo que podemos hacer ahora es, um es un momento que veas, y eso lo asignamos a UTC diurno ahora. Y eso nos dará, um, la UTC, uh, para este momento exacto. Y como puedes ver, es
lo mismo, básicamente las mismas horas que Cloud nueve nos dio como la hora local, que es inteligente. Es decir, están usando UTC. Sí, ahí como su tiempo. que no tengas que hacer lo que
sabes, no tienes que lidiar con esa conversión. Um, manualmente, pero sigo esperando y almacenando cosas usando esta función Tú para ver ahora versus esta función ahora función, Um, algo para que siempre recuerdes
16. Flujo de control de condiciones: Entonces echemos un vistazo a, um a dos partes muy importantes del iPhone llamadas condicionales es y controlar el flujo. Entonces condicional es básicamente que quieres comparar un valor con otro. Y, um así que básicamente, si tenemos X es igual a tres y por qué es igual a cuatro, um, una condición sería X menor que cuatro. Y todas esas condiciones nos dan una ya sea verdadera o falsa. Básicamente son miles de millones. Um, miles de millones son, como, ya
sabes, lógicos, verdaderos, falsos, virales
amables. Entonces, um, si hago X es mayor que cuatro, entonces obtengo un falso porque tres no es mayor que cuatro. Um, yo también puedo hacer, um, es X mayor que por qué? Y eso nos da un falso un oleaje. Um, una cosa que también podemos hacer es X no es igual a por qué, y eso nos va a dar básicamente son huevos. Y entonces que el valor de X no es igual al valor de por qué um, también
podemos a, um X es menor o igual a su un tres. Eso es cierto porque aunque no sea menos de tres, es igual a tres en la misma cosa. Por qué es mayor o igual a cuatro. Nos dará verdad también. Um, entonces esos son los básicos? Um Entonces el control de flujos es básicamente se puede controlar el adónde va el programa haciendo, si las condiciones. Correcto. Entonces si yo a Si X es menor que cuatro, entonces tendrías un semi colon ahí y presionas enter. ¿ Ves cómo tenemos tres puntos ahí? Eso significa que por teléfono está esperando que pongas una especie de como la paz interior fuera ese condicional. Para que puedas presionar un espacio normal lo tienes que hacer por quiero decir, el editor, verás cuatro. Pero en la terminal, puedes hacer solo una, y eso está bien. Entonces si si xx menor antes de entonces, entonces imprimir exe es menor, entonces cuatro. De acuerdo, entonces si presiono enter y luego imprimo, imprimo, entro de nuevo, entonces ejecutará eso porque X, que es tres. Es menor que cuatro. Para que eso sí ejecute. Pero es seguro. Queríamos hacer si por qué es mayor que cinco, que es falso, ¿
verdad? Entonces podemos hacer, uh, imprimir. ¿ Por qué se hace mayor? Lo que pasará aquí es que no se imprimirá nada. ¿ Por qué? Porque ya sabes por qué. No es genial y cinco por lo que se escapa y sigue adelante. Pero no había nada más que hacer ahí. Entonces una cosa que podríamos hacer es hacer una declaración de lo contrario. Entonces si lo haces si Por qué, uh, estos eran de cinco, entonces yo traigo esto y ellos ponen a Els y también semi llamando ahí y luego ponen impresión. Por qué la ISS dicen no mayor que cuatro. Entonces si presiono enter de nuevo aquí, verás que va a ejecutar la segunda línea. ¿ Ver? Entonces eso es si de lo contrario, um, hay como si básicamente construyeras todos tus programas, usando mucho de esto como bloques de construcción. Por lo que es muy importante que los conozcas. Voy a conocer, um, más de ellos nosotros. Seguimos con el curso.
17. Bucles: Echemos un vistazo a los bucles. Los bucles son básicamente como la palabra algo que ciclo hasta que algo sucede. Y luego suelen salir. A pesar de que podemos tener, ah, bucle
limitado. Y luego, um, puedes seguir por ah durante mucho tiempo hasta que básicamente detengas el programa. Pero veamos cómo se ve eso. Entonces digamos que tenemos esta lista, Um, y cinco x 12345 Podemos mirar a través de todos esos valores usando algo llamado un look cuatro . Entonces qué, Qué Cuatro dosis que básicamente le asignas valor. Llamemos a ese voto en X, y pones un punto y coma y luego harás algo si, por cada ítem, va a ejecutar eso y va a tener voto como valor ladrón para eso por ese amor. Entonces, solo sigamos adelante y rezando a Val ahí dentro. Entonces si presionaba Enter, verás que pasó por cada uno y ellos imprimieron ese valor. Entonces eso se llama un bucle for. Usas eso todo el tiempo. Eso viene, algo así como una de esas, ya
sabes, funciones
muy útiles. Otro que podemos usar es,
um, um, un loop while y para eso. Probemos otra cosa que diga que X es igual a cero en el local aquí será mientras que X es menor que seis. Digamos que entonces sí imprimimos exe y luego haremos otro, ya que necesitamos,
como,
cambiar como, el valor de X porque eso se revisará cada vez que termine ese bucle, necesitamos decir que X es igual a uno explosivo. Eso significa que ahora la primera vez será cero. Cuando llegue aquí, estará en ello. ¿ Qué? Y ahora va a ser uno. Cualquier cheques otra vez. Entonces ahora X, que es uno es menor que el sexo. Siguen siendo huellas que se va uno de apagado. Entonces X ahora son dos cheques que y así sucesivamente hasta que llegue a cinco. ¿ Verdad? Y cuando los manantiales aquí lo traemos traerán cinco. Sumará 1256 Y cuando intente volver a correr eso porque porque seis no es menor que seis, saldrá y continuará con los comentarios que tenga después. Entonces ven esa inacción. Y, como pueden ver, se ejecutará del 0 al 5. Um, en el momento en que se convirtieron en seis, um, ya no ejecutó. Um, así que estos son algunos de los bloops de look más usados, pero hay
algunas otras variaciones, algunas de las cosas que descubrirás como vamos solos.
18. Funciones: ok, Vamos a echar un vistazo a las funciones ahora para que podamos definir nuestras propias funciones mediante el uso de la palabra clave muerte, que es, como, definir Así que están bien. Eso es un, um, más uno. Y luego básicamente, pasas. Aquí no puedes tener nada, o puedes tener parámetros que son básicamente virales que se establecen cada vez que
se llama a esta función . Entonces en este caso, vamos a pasar. Ah, siguiente. Viable. Um, así que una vez que eso esté configurado, podemos hacer cosas con eso. Viable. Entonces, por ejemplo, podemos decir, um, X es igual a X más uno
, por eso la función se llama más uno. Um Y entonces podemos imprimir. Exe. De acuerdo, ahora tenemos esa función. Y si escribe pl nos y luego presiona tab, verás que el orden de Python completa eso porque ya tiene eso en la memoria. Entonces para que podamos ver qué pasa ahí podemos pasar cinco. Y cuando entremos eso regresará seis. Entonces, ¿qué pasó ahí? Llamó a la función más allá de cinco nosotros. El X básicamente X equivale a cinco. A feliz hizo X igual a X más uno, e imprimió ese valor Así que si escuchamos 15 obtenemos 16. Entonces se te ocurre la idea. Eso es algo así como cuáles son las funciones Y, um, ¿
podemos básicamente usar funciones todo el tiempo también? Es muy importante que entendamos cómo funcionan. Um, pero juega un poco con funciones y ve lo que podemos sacar de ellas. Una cosa importante que quiero,
um, um, dos tipos saben y recuerden, Um, porque es algo fundamental. Hay algo llamado alcance, y básicamente las variables que se definen dentro de las funciones no se exponen afuera. Entonces en este caso, si imprimo exe aquí, um, verás que no consigo nada porque no es definir, pesar de que es su dentro del más uno. Pero eso viable se llama. Se llama dedo del pie viable local. Esa función, y esa es la forma en que python tipo off like protege los datos desde el exterior hasta dentro de la función,
Um, Um, mediante el uso de esa separación. Entonces recuerda que a veces ya sabes, los estudiantes se olvidan de esto, y son como, ¿Por qué? ¿ Por qué no puedo obtener X si se ve dentro de la función? Recuerda que ese viable está sobre Lee visto, y sólo es aparente o utilizable por esa función, pero no fuera
19. Clases y objetos: Entonces, um, algo que quizás hayas escuchado es que Python es un lenguaje orientado a objetos y, ya
sabes, programación orientada a
objetos es algo que tiene bean, ya
sabes, siendo usado durante mucho tiempo tiempo. Y hay lenguajes están orientados a objetos, como java por teléfono. Pero algunos otros no están adecuadamente orientados a objetos, como JavaScript, um, y ah ph B. Que como que tienen frijol llegando hacia la orientación del objeto. Um, y el principal beneficio de la programación orientada a objetos. Y usar ese concepto es, um es que sabes manejar mejor los datos y hacer que las cosas fueran utilizables, um, y básicamente te permiten separar, ya
sabes, lógica en un in A. En un mejor manera. Es un concepto que no comprenderás de inmediato. Es algo en lo que te pondrás fuerte un poco, y llegarás a ello practicando mucho. Pero piensa en los objetos como, um off, Digamos un básicamente un objeto físico que está representado digitalmente con básicamente dos cosas. Una es propiedades en los otros métodos s. Los inmuebles son, por ejemplo, si tienes auto, propiedad podría ser el número de ruedas derecho, que es, ya
sabes, para un normal como decir sedán. Son cuatro. Pero si es un camión, es como 16 o lo que sea el caso, eso es una propiedad. Y un método sería, ya
sabes, arrancar el motor. Algo que es como una función desactivada para ese objeto y la clase que llamamos clases básicamente como un blueprint o los, ya
sabes, los esquemas para que produzcas una instancia o un clon fuera de ese objeto. Entonces hagamos un ejemplo otra vez. Si no entiendes completamente, hay muchas cosas fuera que puedes leer o incluso usando por teléfono y flash. Obtendrás una mejor comprensión de qué clases y objetos son. Pero hagamos un ejemplo. Entonces una cosa que querrás recordar es que las clases son que encuentran con, um, básicamente un caso Oprah para cada una de las palabras y no en este curso dentro de ellas. Eso es como el pep ocho de ellos. Entonces digamos,
um, um, vamos a definir un auto dorado de clase, ¿
verdad? Entonces el auto voy a tener sólo una,
um, um, básicamente una marca fria propiedad, así que voy a definir un método llamado. Um, ya
sabes, dijo Brand, y siempre te pones a ti mismo como primer parámetro para estas funciones que están dentro de la clase. Y es básicamente una forma de decir esto sólo se puede llamar desde una instancia fuera de ese auto y pondremos algo aquí llamado Brand. Entonces voy a decir que la marca del auto es lo que pasaste como esa marca en esa función y dejémoslo en eso. Entonces básicamente, ahora puedo puedo las copias finas de esa clase u objetos o instancias, básicamente instancias de auto que son básicamente clones uno del otro, y puedo establecer una marca para cada uno de ellos. Entonces, por ejemplo, si digo que X está por instancia fuera de un auto y pongo lejos en este año, si pongo tipo X, verás que dice que es Es un Es un tipo de auto, ¿
verdad? Um, pero ahora ya sabes, si imprimo exe, um, no conseguiré nada. Es sólo que un objeto de auto. Um, pero ahora si quiero poner la marca, llamaré a eso esa función haciendo x dot Marca Set y se pondrán a tu Ok, Así que ahora si consigo la marca del auto, hago x esa marca y me llevaré Toyota. Um, entonces puedo hacer otro auto, por eso. Y entonces voy a hacer Ah, ¿por qué? Dicha marca. Ah, Ford. Y luego si yo si traté de conseguir X a la marca Y otra vez adelante. Entonces básicamente ex. ¿ Y por qué las instancias están fuera del off the off the car class? Básicamente son autos, y puedo establecer funciones de Mawr. Remolcarlas, que se llaman métodos. En este caso, dijo Brian, es un método. Y, uh, ya
sabes, manipulador definió propiedades como Brand es una propiedad, así que vamos a ver un poco más de esos asnos vamos. Pero eso es básicamente muy breve introducción de lo que son las gafas y los objetos. Un par de cosas que quería agregar a nuestra conferencia de clase es que una de ellas se llama Ah, métodos
mágicos. Ah, son su tipo de métodos construidos, y vamos a ver uno que es realmente importante. Se llama la función innata, um, que básicamente instruye cómo inicializamos una instancia de la clase. Ah, al exigir que algunas Biblias sean pasadas. Y el otro es, um, la noción off, um, subclase ing, um, que es básicamente puedes tomar una clase y luego, uh, extendido. Y ah, eso es oro en herencia. Se puede lastimar los métodos más antiguos y todas las características de esa clase pasando por alto la clase nosotros el s un primer parámetro. Pero vamos a ver cómo funciona eso. Porque no volveríamos a entrar al intérprete de Python por de tres. Y vamos a definir un ah, nuevo el auto de clase y sin ningún parámetro ahí dentro. Entonces voy a definir un, um, un nuevo método, un método mágico que está presente en muchas clases. Es muy a menudo que usamos esto y se llama en él. Entonces necesitamos. Lo que dice es que cada vez que creas una nueva instancia del auto, necesitas a Toby, necesitas pasar este viable eso. Voy a estar escuchando aquí. Entonces voy a hacer eso diciendo que necesito ser,
ah, ah, siempre que la marca cuando crea el nuevo y el nuevo auto. Instancia a alguien y luego aquí otra vez. Y lo que hace ese método innit es que va a poner el dedo de la marca de venta. Sea lo que sea que pases, Brand aquí. Ahora voy a crear otra. Otro método. Este no es un método mágico, que se llama Marca Get. Y lo que eso hace es que va a, um, imprimir la marca. De acuerdo, así que ahora, um, si ah, ejecutamos esto. Entonces digamos que vamos a tener nuestro primer auto, y va a ser, um Digamos que es Ah, es mi auto. Se llama mi auto, y va a ser un tipo de auto. ¿ Verdad? Bueno, recuerda ahora que necesitamos en lugar de ponerle a los padres es como lo hacíamos antes. Tenemos que pasar este método mágico en él y ellos necesitan por la boda. No sé si dije que son demasiados subrayados en ella. Y luego para subrayar todos los métodos mágicos. Ten ese, um, ese protocolo al que necesitas pasar bajo guiones bajos. Entonces ah, aquí. Vamos a pasar a Toyota como la otra marca. Entonces, ¿qué pasó? Básicamente, creo una nueva instancia fuera de una clase de auto llamada mi auto, y cuando inicializé que necesito a un necesario para pasar esta marca. Por lo que esta cuerda Toyota se va a asignar dedo del pie que um viable que eran una definición en el en él. Y entonces es pasado aquí a la automarca, que es la marca local o la local viable que tiene ese auto. Entonces ahora si hago mi auto dot get marca, trae Toyota. Entonces eso se dijo apropiadamente ¿verdad? Es lo mismo Eso es sólo acceder a la marca directamente aquí, que es Toyota. Pero como te das cuenta de que en el top uno, el máximo ejemplo, no
lo es. No se devuelve con cotizaciones porque solo está imprimiendo en la pantalla versus este es realidad el Toyota viable. Entonces ese es, Ah, método
mágico. Hay muchos más uno que vamos a estar usando en nuestros ejemplos de propietarios en la base de datos. Um, es ah, cuando se llama ar e pr o reproducir, supongo que es ah, significa y eso básicamente imprimirá Ah, la representación de ese registro fuera del registro de base de datos en la terminal cada vez que lo
jalas y ahí están sus soldados a los que vamos a estar mirando también. De acuerdo, así que ahora veamos nuestra herencia tan inherente y es básicamente que quiero crear un nuevo
que conocí colapso, pero no quiero gustarme, digamos, hacer esto todas las definiciones y toda la cosas que esa clase ya tiene, así que quiero construir encima de ella. Esto es muy común cuando te gusta. Se trata de un trabajo en un proyecto de código abierto, y alguna otra persona escribió todos estos Genial. Um, ya
sabes, funcionalidades alrededor. Eso es una comunicación con un ah, con un Arduino um, en tu, um, que puedes conectar tu laptop, Um, y quieres que toe build desde nuestro dedo del pie encima de esas bibliotecas. Entonces puedes heredar esas bibliotecas o aquellas clases que esa biblioteca define sin tener que repetir todo el trabajo que hizo ese desarrollador más antiguo. Por lo que esto es una cosa muy poderosa que la programación orientada a objetos nos permite hacer en Python . Entonces digamos eso, y quiero crear un nuevo tipo de vehículo de clase llamado camión, Pero esta vez alrededor, en lugar de dejarlo vacío, voy a pasar auto preguntó el, um, como el clase de padres en ahí hay como una especie de it como un padre, um, hijo, um, tipo de relación similar. Y ahí Así que este camión de clase, cuando hago ese camión de clase, está heredando el innit? Método y el método get brand, así que puedo básicamente es básicamente lo mismo. Pero entonces voy a, como, definir un nuevo tipo de, como método en la parte superior, que podría ser, digamos, Ah así auto o base o mejor dicho, este tocar así tendría un método tocar. ¿ Y yo voy a decir cuándo? ¿ Cuándo? Cuando llame a eso, um, va a imprimir auto de remolque, ¿
verdad? Entonces eso es todo. Es un camión clásico
muy, muy sencillo. Entonces ahora voy a mi voy a definir una instancia de eso. Es mi camioneta y voy a pasar camioneta como clase. Pero ten en cuenta que necesito pasar la marca porque es básicamente lo que se requiere cuando definí,
Ah, Ah, la clase de camión como una subclase, um, fuera de la clase de autos. Entonces digamos que esto es un camión de cuatro, ¿verdad? Entonces ver que no daba ni aire ni nada. Está bien si me meto en mi camioneta,
um, um, esa marca get, verás que a pesar de que no me encontraron ese método aquí, todavía lo tengo disponible, y dice Ford C. Pero mi camioneta tiene algo muy específico que sólo puede no hacer. El CART no puede hacer eso, que es un remolque. Entonces si hablo, están aquí, es un auto robado. ¿ Qué crees que pasa si trato de remolcar un auto con mi Toyota, que es mi auto? ¿ Alguna conjetura? Bueno, básicamente
entramos ahí porque dice que ese objeto de auto no tiene atributo. Tocar y es decir, atributo. Es básicamente como un método, pero ese método no está disponible. Entonces eso es lo que le pasa a esa clase original. No se modifica en absoluto por este nuevo,
um, um, nuevo método que el camión está definiendo.
20. Módulos: De acuerdo, Entonces ,
um, ahora vamos a ver cómo hacer este tipo de operaciones sin usar el, um, el terminal python. Um, y básicamente, vamos a hacer empezar a crear algunos archivos. Entonces para hacer eso, voy a crear un nuevo directorio. Um, entonces estamos aquí en espacios de trabajo. Eso Vamos a hacer un directorio llamado pruebas de módulos, y, como pueden ver, ahí creó pruebas de modelo. Um, y ya no hay archivos en sus traseros. Entonces lo que vamos a hacer es crear,
um, um, dentro de eso. Por lo que solo controlo, click o out Click. Y estamos creando un nuevo archivo aquí, y va a ser auto frío, no B Y. Uh, normalmente nombras los archivos como la clase que contienen, pero es de nuevo. No es un rollo duro. No se requiere. ¿ Comprado? Um ah, vamos a hacer eso aquí. Entonces ahora recuerda lo bien que estamos atacando antes de que estuviéramos haciendo, ya
sabes, auto
de cristal. Um y luego vamos a decir en ella auto marca, y luego vamos a hacer Ah, auto marca es igual a marca, lo que
sea que estés pasando por ahí. Um y iban a hacer otro método llamado get brand. Quiero decir que iban a imprimir. Ah, marca
propia. Um, así que ahora lo guardamos. Pero cuando esta pequeña bola gris ahí, eso significa que tenemos cambios inseguros en el archivo. Así que asegúrate de que siempre ves esa pequeña X en lugar de la pequeña gran bola . No sé si te diste cuenta. Cuando presioné la caja fuerte, pasó de, como, amarillo a verde muy rápido. Ah, amarillo significa que es como si la petición estuviera saliendo. Y luego green make significa que el servidor, el servidor Cloud nueve. En realidad, pude guardar el archivo para listar en este momento para interactuar con eso con esa clase. Y así antes de que hagas algo, uh, no
estamos en ese directorio modelo 10. Así que asegúrate de que vas dentro y verás por qué, Um, un poco más tarde. Por lo que otros fueron con misma prueba de módulo. Voy a llamar al intérprete. Um, la terminal y ahora vamos a poder trabajar con eso con esa clase. Por lo que la primera para eso es que normalmente pones de nombre de archivo sin el P y del auto de importación . Entonces le estoy diciendo a python desde el auto p y archivo importar la clase de auto para que pueda hacer cosas con él. Entonces como puedes ver aquí, aquí surgió
un nuevo directorio llamado Pie Cash en el marcador, en el marcador, por efectivo en el marcador, el marcador, y dentro de él verás que tiene algunos, como extraño archivo con Eso termina en P Y. C. Y es básicamente esta es la versión compilada de este archivo de carpa. Ey off todo esto, y básicamente permite a Python ejecutar estos archivos más rápido. Entonces por eso por el chino son muy buen lenguaje en términos de velocidad, porque usará esta versiones compiladas de tu falta en lugar de tener que ejecutar el archivo desde cero cada vez. Entonces ahora cada vez que ejecuto algo de Carpi, por qué se va a ver primero si tiene una versión compilada reciente de la misma, y luego va a poco hecho en su lugar. Y si abrió esa falta, verás que todo está dándolo. Entonces todo es como código de máquina, así que algo que buscar. Además, asegúrate de que si solo llegas a ignorar subrayando el dinero en efectivo de la tarta de puntuación en los directorios de partitura porque no te sirve poner esto dentro de tu repositorio. Entonces ahora debería tener el auto clase a, um, disponible para mí en memoria. Entonces voy a hacer lo mismo que lo dije antes. Voy a hacer una instancia fuera de la clase de autos con la marca Toyota. Um, y ahora si hago mi auto, consigue marca y te darás cuenta aquí que yo completamente con otros, completo con grifo. Así que di esto. Si un presidente la parte superior aquí, ya sabe qué métodos tiene disponibles. Entonces eso es bastante musical. Entonces si haces esto, voy a llegar a Europa. Entonces recuerda cómo te dije que entraras antes en ese directorio. Entonces salgamos. Se puede hacer controlar el o tipo de salida así, y volvamos al espacio de trabajo de directorio de carpetas anterior y pasemos por tres. ¿ Verdad? Y voy a hacer lo mismo desde auto de importación de autos. Me sale un error. Dice Sin nombre de módulo coche. Entonces este archivo de auto no está siendo capaz de Toby cargado en el, um en el directorio de ese directorio significan Entonces, ¿qué está pasando aquí? Entonces, básicamente, si si de donde corres python hace que sea mucho apagado. Es muy importante. Y no vas a ver ningún nombre de módulo. Bloquear mucho en tus carreras es solo, ya
sabes, tratar de hacer algo de sentido común y pregúntate, ¿de dónde estoy corriendo python? ¿ Son los directorios que necesito? Um, para esos, um, disponibles para mí. Entonces la forma en que arreglas este error es básicamente, debes comprobar que tienes una muy mágica otra magia, Um ah, cosa aquí. Pero es pero esta vez lo Así que es un archivo, y se llama en él b y igual que ellos en él en la clase. Ahora vamos a necesitar crear un archivo de imagen dentro de las pruebas de modelo. Pero antes de hacer eso, permítanme borrar esto. Y una cosa que querrás siempre, um, hacer en tu trabajo es estar organizado bien organizado. Entonces cuando borre el archivo por efectivo y voy a crear,
voy a ver la prueba del módulo del dedo del pie. Y quiero crear un director llamado vehículos porque cuando quiero hacer es poner todas las,
um,
las um, clases que tienen que ver con vehículos dentro de esta carpeta. Entonces voy a mover el Auto B. ¿Por qué? Dentro de los vehículos? OK, entonces ahora los vehículos tienen eso y para todos, aún poder llamar a los vehículos Módulo A. Está bien. Quiero crear un archivo llamado en él B y. tan nuevo archivo. Yo sólo voy a anotar en ella que Ah, y sólo voy a anotar p y Así que es en esto va a anotar en ella en este Va a anotar gente de punto con este archivo, no
tienes que poner nada en él, aunque tú puede. Técnicamente, um, voy a decir que sí a esto. No, no lo hagas. No lo guardes. Esa es la vieja alfombra. ¿ Por qué? Está bien, déjame abrirla. Aquí. Aquí, puedes poner también código. Y cada vez que importes de ese módulo, ese tribunal va a correr. Pero por esta vez, no
vamos a hacer eso. De acuerdo, así que ahora note que tengo, um, que los vehículos sosteniendo su si veo lo que hay dentro de los vehículos, tengo a cualquier gente en la alfombra esposa. Y voy a correr por diversión desde las pruebas de módulos de carpeta superior. OK, ahora te vas a dar cuenta de cómo va a cambiar un poco el capataz. Voy a decir de vehículos dot auto importacion auto. Entonces, ¿qué es lo que dice Python? Ahí está eso del módulo de vehículos ¿Y qué define eso como un módulo? Porque tiene un PND. ¿ Por qué disparar dentro de esa carpeta? Por lo que trata que se ajusta a vehículos como casi como si fuera un archivo P Y en sí. ¿ Ves qué? Eso lo interesante que es eso. Y luego estás importando el archivo del auto. Ah, um, dentro
de ese módulo de vehículos, y luego vas a importar auto la clase de auto. Entonces ahora puedo hacer lo mismo. Mi auto es igual a auto Toyota, y luego mi auto consigue marca. Ver, todo funciona perfectamente bien. Entonces estoy corriendo por pulgar desde aquí de pruebas de módulos. Um, ¿qué importo de los vehículos? Carpi? ¿ Por qué la clase de autos? De acuerdo, entonces eso es algo que es realmente importante para ti, um, manejar y poder dominar en algo que incluso, ya
sabes, somos nosotros. Y desarrollador de experiencia, este modelo no se encontró. La cosa es que vas a tener Lo vas a tener. Y solo tienes que, como, parar un momento y pensar en ti mismo. ¿ A dónde vas? Correr python de esos se llama un camino. Para que puedas. También te pueden gustar los finos caminos que se pueden buscar. Por así decirlo. Eso lo vamos a ver a través de otro curso, pero recuerda tener eso en él archivo b y en tu módulo, para que puedas hacer cosas con él. De acuerdo, Una última cosa que vamos a ver aquí en esto. Ah, esta conferencia es Digamos que quiero hacer por encontrado tres y luego importar el dual que
quiero que me guste Run es correcto. Eso hace todo eso por mí. ¿ Cómo debo hacer eso? Entonces vamos a crear un nuevo archivo a nivel de pruebas de modelo, y va a estar frío. Vamos a llamarlo gente equivocada. Yo estoy bien. ¿ Y qué pasa? P i b que vamos a hacer Vas a poder básicamente hacer lo que dijimos o hicimos en el intérprete de
Python, pero problemáticamente Así que vamos a hacer lo mismo que antes de vehículos coche importado. Um, y así ahora lo vamos a hacer, um digamos que mi auto es igual al auto Toyota, y luego vamos a hacer mi auto. No, mi auto. Consigue a Brent. Esto es algo realmente interesante. Ya ves cómo es el editor de Cloud Nine ¿Es tipo de cargar los modelos o los métodos? Um, incluso
va a, ya
sabes, me
dice, como, ¿qué? ¿ Qué parámetros necesito para pasar y todo eso? Entonces esto es bastante útil. Es como si ya me diera pistas de qué métodos están disponibles. Entonces eso es eso. Eso lo vamos a salvar. Y ahora en cambio, fuera cargando el terminal Python, solo
hacemos python tres Run B Y. Y ahí tienes. Te llevas Toyota. Eso es lo que acaba de correr todo eso. Todos esos comandos y se imprimió al yoga.
21. Parámetros: De acuerdo, Lo último que quiero cubrir aquí con nuestra pelea. Pero la introducción de python es argumentos de función o en este caso, argumentos
classmethod. Y verás esto mucho al trabajar a diario. Entonces hay dos tipos fuera de argumentos funcionales,
um, um, o argumentos de función más bien. Y son o palabras clave, tipos
um o tiempos posicionales. Y lo que eso significa es que cuando se tiene, ah, método como get brand en este caso, no
tenemos ningún argumento fuera no, no
requerimos que se apruebe ningún argumento. No obstante, podría
haber una instancia donde quieras tener, um, otra función. Y es una que es genial que se llama puerta abierta para nuestra clase de autos. Y en este caso, voy a decir,
Ah, Ah, número de
puerta es a es un parámetro o ah, un argumento para eso para ese método. Entonces lo que eso significa es que necesitas pasar en este caso una función de puerta abierta, dedo del pie de esa clase o más bien esa instancia de auto, y definir qué número de puerta quieres abrir. Entonces digamos que es uno para el conductor y dos para el a un lado del lado del conductor y luego tres y cuatro para los dos en la parte trasera del auto. Y, ya
sabes, estoy asumiendo que es un auto de cuatro puertas. Entonces en este caso, sólo
voy a decir, um, vamos a hacer una declaración impresa y y diremos Abriendo puerta y luego, um sólo clavaré el número de la puerta y hagamos esto nosotros tres str porque es ah, es un número. Y esa es la forma en que deberíamos poder ir encarnando esas dos cuerdas, ¿
verdad? Entonces guardamos ese eso aquí. Lo que estoy definiendo es que el número de puerta es en realidad un argumento posicional porque es el 1er 1 Ok, y ya veremos. Veremos un mejor ejemplo cuando haga otro, pero vamos a jugar con esto. Yo sólo voy a correr la terminal y, um, digamos de auto de vehículos, el auto de importación Oh, creo que no estoy en el directorio correcto, Así que vamos a las pruebas de modelo e intentemos eso de nuevo. Entonces ahí vamos. Entonces ahora tenemos ustedes saben, ese es mi auto, vehículos y instancia de auto, y creo que ahora necesitamos pasar una bengala en él. El de la marca, ¿verdad? Entonces es un Toyota. Entonces si hago mi auto consigue marca, um, vamos a conseguir eso, pero nota. Entonces voy a intentar abrir una puerta, cierto. Entonces, digamos ¿qué pasó? La puerta del conductor. Entonces digo, abra la puerta. Y si no mejor nada, entraré ahí porque está diciendo que está requiriendo un número de puerta de argumento de posición. Pero eso significa es que sabe que la función requiere que el primero haga aquí el moniker
posicional. El primer argumento necesita ser algún tipo de valor off que la función necesita. Entonces voy a volver a intentarlo. Voy a decir mi, uh, mi auto, Abrir puerta uno. Por lo que ahora consigo abrir puerta uno. Si pasé también, consigo abrir puertas para que vean que aquí se le ha asignado esa viable. Cuando, cuando llamo a esa función y luego es que la está imprimiendo aquí, y es algo así como disponible para eso para esa función a partir de ese momento. De acuerdo, entonces ahora destruyamos a otro. Otro método que vamos a agregar, que va a ser, um, vamos a tener una función ah o un método para estas clases que me permita encender o apagar las,
um, um, las luces parpadeantes. OK, así que digamos sordos, um ah, control de
parpadeo. Y lo que vamos a pasar aquí se va a dejar. Ah, parpadeante y parpadeante derecho. Entonces voy a tener que decir que o está encendido o apagado. ¿ De acuerdo? Y aquí quiero mantener,
como, como, el estatus fuera de las anteojeras en el tipo de como en la propia clase. Por lo que voy a decir auto-izquierda blinker igual a izquierda blinker auto derecho. Blinker es igual a parpadeante derecho. Y yo sólo voy a decir, um print, uh, quiero decir izquierda. Y luego el estado fuera de ese enlazador y luego a la derecha, str tan derecho a parpadear, Ok. Y, um, cierra eso. Entonces lo que voy a hacer es que en realidad voy a comprobar con un if para que pueda encender y apagar. Entonces si deja parpadeante, um en realidad, no, eso no funcionará. Y les diré por qué en un segundo, Así que necesitamos pasar ambas de esas funciones. De acuerdo, así que una vez más, haré la pitón aquí, y voy a importar y poner una instancia del auto. Entonces ahora voy a hacer el control de mi auto dot blinker. Pero necesito pasar a la izquierda Linker es igual, digamos el blinker propio y derecho igual a apagado. Entonces ahora está diciendo que el blinker izquierdo está encendido en el Blinker derecho tú mismo, pero ya sabes, en cuando conduces el auto, realmente no
te enredas ni pasas ambas cosas. O pasaste una o pasas la otra. Yo o pequeño tipo de palanca, ¿verdad? Cuando pones el dedo del pie de la palanca la, ya
sabes, posición
vertical, estás girando a la derecha. Y luego si lo ponemos en posición baja y es que te vas a la izquierda, así que no haría que la función se comporte un poco así. Pero el problema es que necesito pasar ambos. Entonces, ¿qué pasa si solo paso? Um, ¿
el ala derecha o el anteojal izquierdo? Sólo yo consigo otro. Dice que falta uno requirió argumento posicional, Blinker
derecho. Entonces ven aquí es como decir que necesito pasar el ah, el 2do 1 Y así que eso es como molesto. ¿ Verdad? Um,
Entonces, ¿qué hacemos ahí? Entonces tenemos la opción de hacer algo aquí, que es convertir esto en lugar de ser un um, un argumento posicional que vamos a hacer Este s A S. Ah,
es ah, es ah, argumento de
palabra clave. La forma en que haces eso es que puedes poner aquí puedes poner un fichaje igual, ¿de acuerdo? Y luego puedes pre ah, cargar el valor fuera de esos argumentos. Y, um, y a partir de ese momento, es ah, va a ser un opcional o o o básicamente puedes pasarlo encendido o apagado. Pero, um, empecemos con este con el blinker correcto. Entonces ven esto como funciona esto. Entonces voy a decir que el valor por defecto del blinker derecho va a estar apagado. De acuerdo, así que si no pasas eso está bien. Va a ser esposa va a decir Muy bien, ala estaba estancada. Entonces eso está bien. Yo sólo voy a Preed dedo del pie morado a estar apagado. Entonces, ¿ves eso en acción? Entonces vamos a hacer esto, um, importante esto y luego voy a decir que mi auto es el auto Toyota y ahora solo voy a pasar el 1er 1 que nos dio un nunca antes. Entonces veamos qué pasa. Ves, ahora puedo pasar sólo el 1er 1 quiero decir, el blinker izquierdo uno y todos y no necesité pasar. Entonces eso es a partir de ese punto, es
Se llama un, um, un argumento de palabra clave porque la palabra clave es blinker correcto, y ya sabe que eso podría ser o no pasarse a la función. Una regla de oro que debes saber es que siempre pones más allá de los parámetros posicionales o requeridos a la izquierda, y luego una vez son opcionales. Um, o clave eran argumentos a la, um así que la derecha oh básicamente son trailing. Por lo que siempre enlistar los que requirieron primero y luego los que son opcionales. O tener un valor pre establecido puntera el dedo del pie, el lado posterior. Entonces ahora realmente puedo hacer lo que quería hacer al principio, que waas básicamente tienen este tipo de sobre una base total. Entonces si pongo ambos por la falla están apagados, puedo decir si el blinker izquierdo es igual a encendido, luego ponga el enlazador auto iluminado a encendido y luego ponga el blinker derecho a apagado y
lo mismo . Um, si enlazador correcto, entonces eso es como si no. Si de lo contrario si el blinker derecho está encendido, entonces quieres um, básicamente poner el dedo del pie parpadeante derecho ese valor y apaga el Linker izquierdo si
ya estaba encendido y saca esto. Entonces ahora la función va a ser Si pasé el 1er 1 nosotros encendido, entonces el blinker derecho va a estar apagado. Y si pasé el parpadeo derecho, entonces los pensadores de izquierda van a estar apagados. Entonces, veamos si eso funciona. Um corriendo aturdida, se comió el auto. Perfecto. Entonces voy a hacer mi auto. Ah, control de
parpadeo. Y luego voy a más blinker izquierdo igual a encendido. Entonces, ¿qué? Lo que pasa aquí es en pasar esto. Entonces, a pesar de que
el, um, el valor del blinker correcto puede estar activado, se apagará. Entonces veamos que Palabras. Está bien, Perfecto. Entonces ahora tengo la izquierda se queda encendida y la derecha está apagada. Entonces, ¿qué pasa si en cambio compro el pasado el blinker correcto? Voy a girar a la derecha, Correcto. Entonces ahora ven la vida. El izquierdo se activó, y, uh, el derecho se presentó. Entonces sé que ahí, uh, cosa
rápida que quiero mencionar es que si puedes, también
puedes pasar o hacer que estos parámetros sean ninguno. Y lo que eso significa es que puede que ni siquiera se pase, y se van a inicializar con un no valor. Entonces esa es la forma en que te gusta. No hay parámetros que quieras poder pasar o no pasar. Realmente no importa. Y puedes, um y puedes hacer, ya
sabes, comprobar si están tristes o lo que puedan ser. Se les puede pasar lo último. Y de nuevo, esto no es para que te lo recuerdes. Al igual, si este es uno requerido, siempre ponlo al principio, y luego los que no se requieren hasta el final. Entonces eso es todo. Creo que estamos listos para empezar a construir nuestra aplicación Fleiss y, ya
sabes, jugar un poco con esto y tener, um, ya
sabes,
maquillar un poco de diversión, mas características toe nuestra clase de autos. Um, y ya sabes, si tienes alguna pregunta, házmelo saber
22. Nuevo espacio de trabajo: perfecto. Entonces vamos a empezar nuestro frasco,
Um, aventura aquí, aventura aquí, y vamos a empezar por crear un nuevo espacio de trabajo y,
um, básicamente, iniciar nuestra primera aplicación de matraz. Por lo tanto, crea un nuevo espacio de trabajo. Vas a tener que definir un nombre de proyecto ah. Uh, y vamos a llamar a esto el, uh hola? Arriba. Um, puedes sacar la descripción de Trump ahí. Uh, no
hay necesidad de eso. También puedes,
um, um, hacer esto privado o público por pagar a los clientes que puedes hacer. Um, creo que más de uno. Si eres como un cliente gratuito, solo
puedes la cuenta privada bereber. Y también puedes clonar desde existente get, um, repositorio, pero para nosotros, vamos a empezar desde cero. Um, así que también hay estas plantillas aquí. Se puede hacer, ya
sabes, la costumbre. Se trata de Theo Bone a básicamente logo. A personalizado abierto a la instalación. Se puede hacer lo que pueden tener cinco. No Js. Todas estas cosas simplemente iban a usar la costumbre aquí y luego crear espacio de guerra. Entonces ahora básicamente es crear un nuevo servidor para nosotros. Um, y ,
um, toma un poco mientras está creando ese contenedor, que yo, como mencioné antes está usando contenedores Docker. Entonces aquí vamos. Tenemos somos nuestro contenedor ahí Una cosa que te voy a decir de inmediato del bate esto. Hola Arriba aquí, es algo que probablemente me voy a poner en contacto con Ver Cloud nueve para ver si pueden cambiar eso. Es un poco engañoso porque parece como si estuvieras en una carpeta hola arriba. Pero si ves PWD, en realidad
estás en casa una buena ayuda para el espacio de trabajo. Entonces, um, esto se refiere básicamente a dejar el dedo del pie la carpeta del espacio de trabajo y no el, um el hola arriba No hay ninguna carpeta hola arriba ahí. Eso es algo que me tropezó un poco y se tropezó. También algunos, um, algunos de mis algunos de mis alumnos también hay,
como, como, navegar y comandos aquí, pero siempre lo guardo en el espacio de trabajo ahí. Entonces, um, vamos a crear en carpeta real para nuestro ah primer proyecto. Entonces vamos a hacer el aire, y lo vamos a llamar frasco. Um, subrayado en ella. Siempre usado, guiones bajos para carpetas en puedes usar Stashes también. El sistema sucio te dejará. Pero si estás haciendo trabajo de python, vas a subir medio módulos que, um, que vas a tener que importarlo centro. Es muy para usar en el marcador. Entonces, en uno en básicamente una regla de oro que quieres tener a partir de ahora es que siempre tengan nombres de
carpetas con en este curso y no guiones. Entonces por eso te recomendé que pusieras un guión aquí. Por lo que recuerdas esto no es una carpeta. Entonces pero hola o,ya
sabes, ya
sabes, lo que sean las palabras temporales por guiones hasta que te acuerdes. De acuerdo, entonces ahora estamos en el matraz. Vamos a meternos en el matraz, ¿no? Carpeta? Y así es como básicamente son nuestra carpeta de inicio ahí. Y lo primero que vamos a hacer es, um, vamos a tener, um vamos a crear básicamente algo llamado entorno virtual. ¿ Qué es un entorno virtual? Entorno virtual es, um a Separa cada proyecto donde tienes puedes tener múltiples proyectos. Eran simplemente pueden tener un matraz en ella. Proyecto que puedes tener otro como, el problema de bloques de pisos que vamos a hacer después. ¿ Va a ser otra carpeta? Y luego cada carpeta va a tener sus propias bibliotecas de set off, um, versión off python, y vas a poder ejecutar todo esto en el mismo servidor. Entonces eso es un asunto bastante grande. Es Es Es algo genial. Y te permite rastrear qué bibliotecas? Se instala esa carpeta mediante el uso de algo llamado A requirements file. Pero no te preocupes por todo eso. lo vamos a ver a través de otro curso. Por ahora, Um, solo asegúrate de que has creado tu carpeta, y ahora vamos a crear este entorno virtual. Entonces, ¿cómo creamos un entorno virtual? Es muy fácil. Se utiliza virtual y cuál es este comando que, um es decir, um nos permite crear este este este este entorno separado. Y luego vas a dio básicamente pones una carpeta aquí donde ese bien, donde esos archivos, esas bibliotecas, esas versiones de python en las que vamos a vivir. Pero debido a que estamos usando Python tres y boom to o al menos cloud nueve, puedes consultar la versión aquí. Pero si haces pitón, ese es el destino. Ya verás que es a partir de 2.7. Por lo que queremos hacer un ambiente de veto que utilice por de tres. Entonces para eso lo haces virtual y luego pasas Dash B, que es versión python, y pones por teléfono tres. Ese es básicamente el ejecutar herbal que vamos a usar. Entonces el nombre de las carpetas va a ser ve envidia. Um, puedes poner ahí cualquier nombre que quieras. No obstante, es más fácil si lo usas siempre el mismo nombre, porque sabes que va a ser de segunda naturaleza para ti, también, activar siempre este entorno virtual, y vas a ver que en un poco. Por lo que virtual em dash ser Faison, tres VND. Entonces lo que pasa ahí es que crea un nuevo em virtual con python tres dentro del matraz. ¿ Innit? Carpeta. Entonces ahora, um, si vemos aquí, verás, verás que tiene una nueva carpeta llamada Entorno Virtual. Si estás mirando ahí, vas a ver a Ben, que es el básicamente algunos comandos que necesita el retiro para ejecutar otro. Ver el mundo de Lib Labour. El virus vivirá y si haces clic aquí, hay python 3.4 y luego paquete lateral va a ser otro importante porque ahí es donde
se van a instalar los paquetes más antiguos o las bibliotecas y cuando se roban, se
van a instalar en. Entonces, um por ahora, solo sepan que tenemos esa carpeta V y V p um ahí dentro. Entonces, ¿ahora qué? ¿ Qué es lo que haces? Básicamente necesitas activar este entorno virtual. Activar significa que a partir de ahora, todo el comienzo para instalar cosas y para ejecutar cosas se van a hacer como si fuera un CIF Este entorno era todo tu servidor. Entonces la forma de hacer ese tema tiene que memorizar días, pero eres lo recordarás Eso es tú Hazlo una y otra vez. You do Fuente V E N V.
Cual es la carpeta con ella antes de haber sido activada. De acuerdo, quiero que lo mires. Esto de aquí. ¿ Ves cómo ahora tiene paréntesis al principio? Tengo envidia. Eso significa que se activa el entorno virtual. No Y repito esto como frente rojo Letras negritas. No hagas nada con tu proyecto a menos que esta cosa V envidia esté en el en el
inicio del de la falta,
um, um, estructura o el prompt, porque de lo contrario sucederán cosas malas si tú, ya sabes, instalar paquetes y ese V y no hay encendido. No los va a instalar aquí en B y B. Los va a instalar de lado ancho o servidor ancho y muchas cosas fuera de lugar. Entonces recuerda, um, siempre tener esa V y estar ahí. Entonces vamos a cómo funciona el acto ¿Cómo se desactiva? Bueno, una vez que estás activado, solo teclea desactivar, y saldrás. Mira, ahora no hay ser y estar ahí. Um, pero recuerda tu sabes que has tenido tu café, tu abrir tu nube nueve. Para empezar a trabajar, vas a tu directorio matraz en él o lo que sea que tu producto esté funcionando y sin, ni
siquiera abras el editor. No hagas nada hacer fuente que estar activo y presionar esos tipos. Solo tienes que jugar como, escribe como dos letras tu pestaña de spreads, y ordenará completa y asegurarte de que tengas ese ve y estar al principio.
23. Pide Instalar Flask: De acuerdo, así que ahora instalemos matraz. Por lo que parpadea una básicamente una colección fuera de bibliotecas. Y, um, recuerda que tenemos la envidia ve ahí dentro. Eso significa que estamos bien. Está bien. No hagas esto sin eso. Además, solo para asegurarte de que estás en el underwrite, la versión brillante del iPhone, y que el entorno virtual instaló la versión correcta. Tan solo un pitón holandés, sé si no ves 34
Ves, ya sabes, dos puntos algo y no ves tres puntos algo que tu sabes, tu pones tu propio entorno. No está definido, um, ni activado. O no pasaste la bandera dash p correctamente y no encontró una pitón. Tres. Ejecuta herbario ahí. Entonces ojalá ese no sea el caso. Deberías tener python tres 0.4 o algo similar ahí dentro. De acuerdo, así que tenemos eso. Entonces, ¿cómo se instalan los paquetes? Usamos algo llamado Pip on. Esa es la bicicleta por teléfono instalador de paquetes que nos permite fácilmente solo, ya
sabes, hacer pip instalar X, y va a ir en el, ya
sabes, internet. Busca ese paquete, y luego si lo encuentra,
entonces lo instala localmente y lo va a instalar de nuevo en este ve y ser pitón laboral. Tres paquetes laterales. Entonces voy a dejar eso abierto, ver si podemos revisar cuando se instale el matraz. Entonces, como dije, sí
pagas puesto de ping, y luego solo tenemos que pasar matraz. Y mientras presionamos entrar, um, déjame poner esto un poco más alto aquí. Um, verás todos los paquetes que se están instalando ahí. Sí, así se puede ver aquí. Ahora hay matraz. Ah ah, carpeta
Flex. También hay ah ah trabajo de
Jean . Hay una caja fuerte de marcado en. Si lees a través de los fondos que se estaban robando lo mismo ves que,
um, um, había un matraz voreqe jengibre de soja a su peligrosa caja fuerte de marcado. Por lo que esas son bibliotecas antiguas que flashearon requiere que un dos funcione correctamente. Pero, ya
sabes, deberías ver algo que es un matraz instalado exitoso y todos estos otros archivos si tienes algún error, ya
sabes, intenta comprobar si te falta algo. Si lo escribiste mal. Ah, etcétera. Deberías estar bien. Um, Y eso significa que ahora el matraz está disponible. Um, así que eso es todo. Ahora vamos en la siguiente sección, empezar a construir nuestra aplicación o nuestra primera aplicación de pisos en lugar de paso a paso y
vamos ah, ah,vamos allá.
24. Trde C9 Python: Por lo que quería hacer esta aclaración porque hay algo que la nube nueve
cambió recientemente en términos ahí. Um, enlazando en. Préstamos es como un software de programa que está constantemente comprobando si tienes algún tipo de, como errores o errores en el en el código que estás escribiendo. Y recientemente están siendo como mejorar su soporte telefónico para, ya
sabes, cosas como, uh, uh, tal vez yo y, um mejor, mejor tipo de vinculación y apoyo. Y una cosa que introdujo que no es, um, no ayuda. Uh, algo así como nuestra La forma en que hemos estado escribiendo el código es que, um ellos ahora necesitas gustarles, um, específicamente, uh, decirles o decirle al editor el camino donde tu virtual funcionan las bibliotecas de entorno, y te voy a mostrar un ejemplo. Y así tienes en idea de lo que estoy hablando. Entonces tengo esto,
como, como, importación de
prueba, um, espacio de trabajo, y voy a hacer un nuevo archivo aquí, y, um, así que voy a remolcar um, en realidad, déjame que lo guarde. Entonces creamos el archivo desde aquí, y tú archivas y me llaman ir. Papá. Hola? p y Así que tengo un visual en para Eddie que tienen que tiene matraz importado, quiero decir, instalado en él. Y como pueden ver aquí, si voy a paquetes laterales, verán que tengo. Tengo matraz ahí dentro, ¿verdad? No obstante, um, hay un pequeño problema ahora que, um si yo si sigo adelante y empiezo a hacer mi código y recuerdo que necesitas gustarte, um um fuente, uh, entorno
virtual. Activa aquí. Pero eso es incluso antes de eso. Um, si lo haces de ah ah ah matraz importación. Correcto. Y tratas de, como, seguir trabajando en tu base de código. Um, verás que eventualmente te pones, como, un poco como rojo. Uh, firma aquí diciendo, como que significa que los editores de la corte no encuentran matraz. Um, a veces se tarda un poco en aparecer, pero ,
um, es si puedo abrir otra c abierta. Léame aquí. Yo estoy mirando a Harris Esto aquí y ver. Entiendo esto, como, incapaz de importar matraz. Y olvidemos por esto por un momento. Entonces lo que está pasando aquí es que es, um el editor no es capaz es no encontrar el donde las bibliotecas de lo que Eso frasco, y actualmente está mirando justo a la en la ruta actual, uh, donde la ruta de python que ellos tener pre instalado, que es el del, uh, en el servidor principal. Entonces lo que necesitamos hacer para que eso desaparezca y verás acceso adecuado para otras cosas que son importaciones de tus paquetes de entorno virtual. Hablé con Toe Cloud nueve y en realidad, como fueron muy útiles. Y trata de, um, um,
algo así como trabajar conmigo este número Pero lo que tienes que hacer para conseguir que el rojo se
vaya el Xs rojo es que necesitas gustarte es decirle explícitamente al editor donde los paquetes laterales tu virtual ambiente son, y la forma en que haces eso es la siguiente vas a la re envidia go lib. Así que abre tu live aquí y luego ve al bisonte 34 a la derecha, Y luego ve a los paquetes de Sai y están haciendo clic derecho ahí y usa Pon algo que diga terminal abierta aquí. Si ves que,
um, um, te llevará hasta el dedo del pie, el dedo del pie, ese camino y luego solo te dopey wt que es, ya
sabes, persona trabajando directorio en ti conseguir esto esta esta camino, este es el camino desde el principio. Es decir, desde la raíz fuera del servidor hasta sus paquetes laterales fuera de su entorno virtual. Así que sólo asegúrate de copiar su, um um comando, ver o controlar. ¿ Ver? Y luego vas a los engranajes aquí y donde dice, um pistas, y me refiero al apoyo del lenguaje. Ya ves, hay un camino de bisontes ahora ahí dentro y ves esto hay dos patsy ahí. Esos son los del desde el servidor. Asegúrate de ir hasta el final de la línea ahí dentro, pon un punto y coma y luego pega el camino de ti. Copiarlo. Entonces ya ves, aquí está el paquete saco, Una especia en 34 la envidia en vivo, etcétera. Y, como se puede ver aquí, tiene
lo mismo. Mi columna sería antes de ahí, la que ya estaba ahí. Por lo que presionas enter. No necesitas hacer como, digamos, para nada. Eso se guarda automáticamente y luego cierra y cierra este también, y ves que esto va a desaparecer en un minuto. Um, porque ahora está encontrando el camino eran para matraz, así que puedes seguir trabajando aquí. Um, y eventualmente desaparece. ¿ Ver? Entonces eso es lo que pasa. Es un poco de, ah molestia, porque antes, al
menos desde cuando estaba trabajando con él, no
tenían ese problema. Pero ahora necesitas dedo del pie hacer eso. Necesitas establecer tu ruta de python. Y en la, um, en esa biblioteca, um, esa ruta de paquetes laterales en si ves
alguno, cualquier pequeño acceso derecho con cualquiera de los paquetes tratando de importar, algo así como mirar donde están almacenados Y si no tienes ese tipo de gusto aquí, pero está instalado en otro lugar de la especia y 34 um, algo así como directorios. Basta con seguir adelante y poner otro punto y coma y en la ruta donde se encuentra la ruta de contención o carpeta donde esa bibliotecas. Entonces esa es la actualización. Esperemos que eso resuelva cualquier problema. Y si tienes algún problema, solo piensa en mí
25. Aplicación mínima: De acuerdo, así que empecemos nuestro ah matraz. Um, viaje por aquí. Um, deberías tener el espacio de trabajo de la app de mango ing ahí. Um, vamos a seguir adelante y abrirla. Um, perfecto. Entonces ahora tenemos nuestro entorno virtual,
uh, uh, dentro del matraz. ¿ Innit? Carpeta? Entonces, ¿recuerdas, Hola? Corre hacia arriba. No es una carpeta. Es solo el nombre fuera del, um um fuera del servidor de su espacio de trabajo y un matraz en él es la carpeta real que hemos creado. Y entonces el entorno virtual es el entorno virtual. Entonces antes de que hagamos algo, recuerda lo que tenemos que hacer aquí antes de que empieces a codificar o a hacer cualquier tipo de operación . Eso es correcto. Necesitamos activar nuestro entorno virtual. Por lo que haces llagas Vande siendo activado. Y recuerda, tienes que estar ahí en el matraz. ¿ Innit? Carpeta. Entonces si por casualidad es ah, Control. Ve que, um, es un tu en tu espacio de trabajo aquí o en casa. Sí ves el matraz del espacio de trabajo en él, y luego en su haces la fuente. Um, lo siento. Lagas. Um, camioneta siendo activa. De acuerdo, Ahora que tenemos RV y estar ahí, eso significa que estamos bien para ir está clara la pantalla y el Stipe empieza a escribir nuestra primera aplicación de
pisos. De acuerdo, entonces vamos a crear el archivo donde vamos a iniciar la aplicación. Déjenme cerrar esto. Léame porque no necesitamos eso. Y el tardío el expediente, um, el salto. Genial. Y voy a desaparecer brevemente el dis terminal haciendo escape de control. Entonces vamos a granjear tu archivo aquí, y se va a llamar Hola, P, y asegúrate de que está en el matraz innit? Carpeta, y está en el mismo nivel que ve MB. Ahora, vamos a hacer doble clic allí para abrirlo. Y así lo primero que vamos a hacer es, um vamos a escribir desde matraz importación de matraz como recuerdas esto de la lección de módulos que acabamos de ver en la sección anterior. Esto solo está diciendo desde el matraz de importación archivo de matraz. Ahora bien, si aquí no hay director de matraz, ¿cómo está encontrando eso? Bueno, entonces la cosa es que hemos visto una mancha de la activación V envidia,
um, um, ojos
pitón dijeron que buscara archivos dentro de este lado empaqueta un oleaje de otros directorios. Entonces ese matraz, um um, archivo o carpeta? Eso es ser, um ah, referencia. En realidad está este este matraz aquí. Entonces así es como es capaz de encontrarlo. Pero sigamos de matraz importación. Um, por lo general hay lo primero que debes hacer en la aplicación flash es definir una instancia fuera de clase de matraz haciendo esta línea de arriba igual a matraz y luego un
método mágico significado llamado nombre en este Ir a anotar nombre en este Ir a anotar este nombre o el departamento o que se está pasando aquí es solo para asegurarte de que tienes en
aplicación única ,
um, nombre, nombre, um para el para la instancia de matraz. Y en este tipo de nombre de partitura solo contiene una cadena que, dependiendo de dónde
llames a este archivo, va a ser o subrayado guión bajo principal subrayando la partitura si se llama desde la terminal, o va a se llame hola si se llama desde el desde el terminal python. Entonces básicamente solo un lado que suele ser lo que haces, um, para asegurarte de que tienes una instancia única fuera de esa app de frasco. Um, lo siguiente es, vamos a definir ah ruta y alrededor de ella básicamente, el tu l que vas a estar pegando, y luego simplemente lo ponemos aquí. Entonces ya ves, um, este poco divertido a señal del comienzo de esta,
um, um, fuera de este método fuera de la instancia de la aplicación se llama decorador, y un decorador suele significar modificar la siguiente línea o el siguiente cosa que pasa después de esto, Um, con algún tipo de comportamiento y lo que decoramos es estas función llamada Hola mundo. De acuerdo, ahora, no te preocupes. Si hay mucho de cosas nuevas pasando aquí, te vas a quedar con el aguijón mientras seguimos jugando con esto. Pero básicamente estamos encontrando una función dentro de este archivo llamada Hello World, y vamos a regresar. Um, hola, mundo. No creo que hayamos visto retorno, pero el retorno básicamente le dice a una función cuando se completa. Um, O cuando llegue a ese punto, solo tira esa cosa viable o cuerda o, um, uh, expresión que tengas después del regreso a quien lo llamara. Um, y vamos a ver cómo funciona eso en un segundo. Entonces ahora vamos a decir si nombre, que es la misma cosa mágica que tenemos aquí. El método mágico. Si nombre es igual a main, entonces eso significa que se estaban llamando desde el desde el desde la terminal desde
la línea de comandos y no desde la python. Um, terminal. Um, entonces vamos a hacer app que se ejecute, y básicamente vamos a dejar que yo diga que esto es para imprimirla. Entonces lo que hace ejecutar Es básicamente crear un servidor. Eso es todo el tiempo esperando hasta que alguien golpee una dirección on fuera de esa aplicación. Y, um, y justo, como, enrutado a través de estas rutas a cualquier función que coincida en términos de la carpeta . Um, sin embargo, ya que estamos trabajando con la nube nueve, hay un par de cosas que necesitamos agregar aquí. Una es, um Antes de hacer la importación ahí, necesitas refinar un host. Entonces vamos a hacer esto diciendo que host es igual, um os que hacen viable el medio ambiente. I p coma 0000 Y esto básicamente está diciendo el host para eso Para esto, para esta aplicación va a ser o el i p que ha pasado por Cloud nueve al igual que un entorno
preestablecido viable. Eso contiene los servidores I P. Y también necesitamos definir un puerto donde esto se va a ejecutar. Y en este caso, vamos a tener,
um, um, convertir dedo del pie en Jer el, uh, medio ambiente puerto frío viable o pasado 5000. Está bien. Y luego cerramos esto, ¿de acuerdo? Y ahora hemos pasado esto como host iguala host, puerto
coma, igual deporte. De acuerdo, entonces ya ves cómo me estoy poniendo, um esto esto errores de aquí? Um, básicamente, necesito tener siempre disponible, así que voy a remolcar importación. Ah, como y deberíamos estar bien. Ah, este aire aquí diciendo en el nombre fino, viable. Sí, me falta otra puntuación, así que ¿ves cómo nublan nueve centros? Me está diciendo todo el tiempo, Como si tuviera errores, eso es muy, muy útil en los herederos. ¿ Eres ciudad? Muy expresivo. Entonces, um, eso es ah, cosa
bonita de Brickell. Entonces vamos a guardar eso, um, control s o comando s si estás en el Mac y deberíamos estar bien ahí. Entonces, ¿qué pasa otra vez? Um, estamos importando la clase y extensión del matraz comiendo una aplicación o aplicación usando el guión bajo. Nombre del guión bajo. Entonces estamos diciendo que si alguien golpea la varilla, que es como el dominio superior luego ejecutó esta función y la función se llama hola mundo y regresa a cadena. Hola, mundo de vuelta a la persona que le pegó a ese euro. Y entonces esto es como el tipo principal de como una parte corredor del guión, que es, si nombre es Maine, lo
que significa que se está ejecutando desde la terminal. Entonces vamos a definir un host, que es el host Nube nueve y el puerto Nube nueve, que es Ah, el I p viable si está configurado. Y si no, es 0.0 punto 0.0. Nosotros solo un I P. Eso es, ah, ya
sabes, básicamente explosivos, la aplicación al mundo y luego puerto ¿El entero fuera del entorno del puerto m es viable o 5000? ¿ Cuáles son los frascos? Por defecto. Si estabas ejecutando esto en una especie de máquina Lennox o Windows o Mac localmente, no
necesitas estas dos cosas y flash, pero básicamente ejecutado por la falla en la 5004ª. Pero eso es, um, eso es todo lo que necesitas tener para nuestra primera aplicación. Entonces veamos cómo funciona. Entonces vuelve a escapar el control, ¿eh? Para que podamos traer a la terminal y recordar, ve envidia tiene que estar ahí. Está activado, y necesitas estar en el matraz, ¿no? Directorio, y necesitas tener tu hola p.
por qué son tu B m v. Um , entonces básicamente, vamos a hacer Python. Hola p. Por qué OK y pega Enter Perfect. Por lo que dice ahora que se está ejecutando en HDP cero puntos Europa, una vez que estás a bordo del 08 80 que básicamente es como si estuviera corriendo para cada cualquiera que llegue al puerto 80 80 que es el entorno de desarrollo de Cloud nueve. Pero en realidad no es, um, ya
sabes, no
es realmente el, um ah, ese puerto en el exterior, es brillante funcionando, realmente en el puerto 80 que es el normal, ya
sabes, algo así como tu URL para servicios de P extra. Entonces, ¿cómo vemos esto así, no
hay como me gusta, miro la aplicación en ejecución. Ahí está esto. Previ y correr los fondos no funcionan con esos. Preview solo te permite disfrutar de una vista previa de un archivo, correo electrónico
anexado o contenido estático y ejecutar ejecuta el archivo, pero desafortunadamente utiliza el python 2.7. Ese no es nuestro entorno virtual, y hay una forma de ejecutarlo, usando el tipo de like puedes modificar qué python ejecutar herbal y potencialmente podrías definir a pesar de inexcusable aquí y ventilar. Pero aún no he encontrado tiempo para hacer eso. A lo mejor un estudiante que tenga un poco más de tiempo Puede ah, averiguarlo y poner un ejemplo ahí en el en las formas. Pero por ahora, la forma en que vemos donde se está ejecutando, donde vas al share aquí en la parte superior y ves que tienes en enter app y editor de previsualización es compartir tu código. Um, y la aplicación es la real fueron todo lo que queremos mirar, ¿
Cuáles son estas esta cadena? Entonces es básicamente tú eres trabajo. Um um, tu ah, tus proyectos Nombre dash, tu nombre de usuario dot c nine dot io. Entonces si hago clic ahí y hago clic en abrir, obtendrás otro toque. Y ahí tienes. Tenemos Ah, hola mundo, Que es Ah, básicamente nuestra primera obligación de lino corriendo. Enhorabuena.
26. Empezar con Git: ok, Ahí está nuestra aplicación de hermosos pisos funcionando. Y como saben,
um, um, um, soy un gran, um recomiendo, como, realmente fuertemente que aprendan y,
ah, ah, use Get como su control de versiones. Si no has oído hablar de get o no sabes de get mucho,
um, um, definitivamente
hay por supuesto que quiero recomendarte, que es el son dueña esencial get course, que también está aquí en ti, Timmy y básicamente esencial obtener curso te enseña como los conceptos básicos sin entrar en, como, ya
sabes, causa Skip gates son herramienta muy complicada con la que puedes hacer muchas cosas fuera de aquí. En este curso, te
enseñaré básicamente las cosas muy esenciales que necesitas tener como desarrollador para trabajar a diario como si hubiera algunas otras cosas
más especializadas que potencialmente podrías hacer. Y puedes aprender después de hacer el curso. Pero un gusto por las cosas básicas y para conseguir tus operaciones del día a día para olvidar, básicamente recomiendo que hagas esto o, ya
sabes si quieres. También puedes mirar otros cursos de obtener en una me o en Internet, pero salí así. Eres rápido cómo haríamos eso aquí. Entonces cada vez que empecé proyecto, yo inicialmente, ya
sabes, desde el principio, solo
empiezo a conseguir mi puesta en marcha. Entonces, ya
sabes, para que esos para nosotros hagamos eso, um, tienes que estar en la carpeta raíz, y sí te metes en ella. Eso básicamente crea un get, um, me meto. Ah, carpeta. Um Y, um, queremos tener un archivo did ignore para que no tengamos, por ejemplo, esos python, um, directorios
compilados o cosas que solemos hacer. Entonces tengo un, um un archivo gettinit de arranque que podemos usar, que es el siguiente. Entonces siendo un nuevo top aquí y solo acude a un invitado. Doug, tienes que vengan slash de la serie D tú y verás un get ignore empañando ahí. Este es el conseguir ni así debes empezar con este. Um, puedes poner crudo aquí, y luego simplemente copiar y pegar eso. Y así vamos a crear al mismo a nivel gobernado. Um, nuevo archivo dot Obtener ignorado. No, hice ese archivo y puse esto que es un buen punto de partida para fondos que normalmente no necesitamos facturar en un repositorio. Perfecto. Entonces ahora sí voy a conseguir estatus para ver qué? ¿ Qué? Lo que hay de nuevo tiene que conseguir Get ignorándolo. Hola, P. Por qué yo en esos archivos de ahí dentro, y voy a comprometerme esto con primero venir perfecto. Y ahora básicamente puedo empujar esto para volver a conseguir hub. Si no sabes nada de
esto, está bien. Y puedes continuar el curso sin él. Yo recomiendo encarecidamente, sin embargo, que te pongas a empezar se pondría. Y, um, ya
sabes, avísame si tú, um ya sabes, si tienes alguna pregunta sobre cómo conseguir el curso con un descuento,
um, um, pero definitivamente te recomendará te consiga conseguir un espía de tu conjunto de herramientas de desarrollador profesional .
27. Depuración: De acuerdo, entonces tenemos nuestra solicitud aquí. Um, con el hola mundo Askew puede ver todo se ve casi igual. Si veo aquí, veo Hola, mundo. Eso es perfecto. Entonces voy a hacer control escape y poner el make the application run de nuevo. Um, y ahí está el otro mundo. Una cosa que te vas a estar encontrando haciendo mucho es editar código y luego revisar el de esto. Ah, si este cambio se ve bien y nada se está rompiendo Así que digamos que queremos el dedo del pie cambiar mundo a Hola, todos. Um, guardé el archivo y luego voy a volver a cargar la página aquí, pero aún veo Hola mundo. Entonces, ¿qué está pasando? Bueno, lo que pasa es cuando esta página ya está, um, digamos que esta aplicación ya se está ejecutando. Um, esto, ah, esta base de código no se actualiza porque recuerda lo que te dije sobre tener la aplicación siendo cobrada, lo
que significa que es algo así como en un modo estático, y solo está recuperando la versión más reciente de la base de código. Pero en realidad no está, um, reflejando los cambios ahí dentro. Entonces ese es el dolor, porque eso significa que me tiene que gustar el control. Ver aquí y luego poner python Hola, p y otra vez. Y ahora si recargo la página, entonces veré mi cambio. Pero no quiero estar haciendo eso cada vez. ¿ Verdad? Entonces otra vez, vamos a salvar si cambio esto a través de Hola mundo, guárdalo Y entonces sabemos la página Nada está ahí. Entonces una forma en que podemos ir
por ahí Eso es, um, pasando otra bandera y esa bandera, se llama debug. Entonces la forma en que hacemos eso es haciendo lo siguiente, solo
tenemos que agregar un Hacemos referencia a la app, la instancia de
la app. Que es este happing desde aquí. Y, uh, déjame claro eso y luego pones el bicho igual a cierto. Ahora no quieres hacer esto en un entorno de producción en un entorno porque la depuración de aplicaciones en realidad es menor. Y también vas a ser nosotros debilitados. Nos vamos a ver más tarde. Se mostrarán los errores en la página. Um, digo como ocurren, y no queremos hacer eso por, como nuestra aplicación frente al público. Sólo queremos,
como,
mostrar Ah, Ah, un genérico, Ya
sabes, 500 error o aplicación ahí con algunos como ya sabes, bonita imagen en vez de como, escupiendo, Ya sabes, el por error telefónico, bandejas de
stock. Entonces veamos cómo funciona eso. Por lo que he hecho artículos activos. Cierto. Déjame traer el,
um, um, el servidor otra vez, y voy a volver a ejecutar esto. Python tenía a Opie. ¿ Por qué? Entonces si me refresco aquí, dice hola mundo. Pero fíjate aquí en la parte inferior mientras cambié esto a Hola, todos. Y luego guarda como puedes ver, dice detective cambio en este directorio recargando, Reiniciando con eso para no tener que parar y reiniciar el servidor. Los cambios se reflejan simplemente pulsando refree Load en el en el navegador. Entonces eso es una gran ayuda. Y eso, um eso también te ayuda, ya
sabes, seguir trabajando en tu base básica sin tener que gustarte, haciendo control. ¿ Ver? Y entonces empezamos de nuevo. Otra cosa genial que podemos hacer aquí es, um, cuando tienes partículas de Abdi verdaderas. Bueno, déjame mostrarte antes sin la estructura de partículas de Abdi, déjame guardar esto, um, cualquier control, mira, si
acaso. Y entonces, ¿qué voy a hacer aquí sin los ilegales activos? Cierto. Voy a presentarme ahí. Entonces una cosa que voy a hacer es como, digamos que voy a poner yo igual a tres, y luego voy a poner, um, usted visitó. Necesito poner canchas de dólares porque necesito poner un Has visitado algo que voy a poner, um, yo veces. Ahora, si recuerdas, um, de la, um, sección de cadenas
viables, no
podemos poner un plus yo aquí porque este es un entero y esto es cadena, así que eso debería retorno por error. Entonces, ¿qué pasa cuando no tienes que hacerlo? Barnicle es cierto, y voy a recargar la página. Me pongo en error interno del servidor, que es así como se vería en tamaño normal y eso es preferido en lugar de como, mostrando dedo del pie a los usuarios públicos Lo que pasó ahí es, como un más, um, me gusta, dedo del pie
de comunicación más agradable. El usuario diciendo que algo pasó y, ya
sabes, hubo algo inesperado. Pero cuando nos estamos desarrollando, probablemente
queremos ver qué es lo que salió mal. Entonces, um, nuevo, vamos a poner los barnacles verdaderos aquí, y vamos a volver a ejecutar la aplicación y ver qué pasa. Entonces mira, este es un mensaje de error muy diferente. Ahora en realidad nos está diciendo dónde está el aire, y esto se llama la pila Trace. Como mencioné, básicamente dice,ya
sabes,
desde
lo ya
sabes, muy en pupilo o paz interna, Lo que pasó en hacer usualmente solo retrocede y especie de escape hasta llegar a gustarte el aplicación real. Aunque después de que llevas haciendo esto por un tiempo, esto esto, algunas de estas cosas podrían hacer que tenga sentido, pero, um así que aquí está el aire que realmente nos interesa. Dice type air puede convertir objeto int a string implícitamente. Entonces eso significa que necesito poner una conversión de esa cuerda dedo del pie antes de poder agregarla a esas dos cuerdas. Entonces eso ayuda mucho. Y esto es algo que, um, que definitivamente podemos usar mientras nos estamos desarrollando, pero no para los reales como usuarios públicos. Entonces la forma de arreglar eso como te gusta no, es poner
revuelo, revolver me alrededor de ese guardar, y empezamos automáticamente. Y luego si recargamos, vemos que lo visitaron tres veces, así que eso está funcionando perfectamente bien. Otro truco genial que quiero mostrarles chicos es,
um, um, algo que se llama el bugger del domingo. Y, um, yo sólo quiero hacer algo aquí, E I igual que cierro uno. Y, um, sólo poner algunas líneas extra de código visitado igual a yo y luego poner visitado aquí. Entonces estoy como, empezando eso con igual a tres. Y entonces me igual a yo más uno, que serían cuatro. Y luego me gusta un signo visitado dedo del pie I Esto está todo un poco apagado, como tonterías, pero solo quiero mostrarte algo llamado Dirty bugger. Entonces en la nube nueve, si solo escribes PDB y ves ese fragmento ahí dentro, solo
presionas enter. Y esto es algo que van a usar mucho askew, algo así como,
están tratando de casa por bichos. ¿ Qué? Lo que esto hace es que los pasos O. R detiene la ejecución fuera del script en ese punto. Y luego después de eso, se
puede
como, como, ir hacia adelante, atrás, paso a paso y ver qué está pasando. Por lo que normalmente usas esto cuando tienes un error y ves el número de línea. Se pone esta afirmación tal vez cinco líneas antes, o algo
así, para que se pueda ver qué es lo que está pasando Paso a paso en el en la aplicación a medida que corre el ácido. Entonces cuando guardé eso, ya grabó esto. El cambio. Entonces ahora cuando yo cargue aquí, vas a ver algo, que es que las páginas no se cargan. Dice, Ya
sabes, es como en,
ah, ah, espera de una vuelta para resolver. Y si ven aquí, verán que ahora tenemos algo extraño aquí dice, um mayor que Homo pertenecen. Hola, p.
Y. Y. Nueve. Eso significa que se detuvo en Línea a Línea nueve en la función Hello World y ya ves, hay una flecha pequeña que es un cursor, y ahí es donde va a suceder la ejecución el siguiente comando. Entonces dice que igual a calle. Entonces si yo Si realmente puedo interactuar aquí, ver puedes puedes hacer cosas aquí para que en realidad te gusten Ah, ya
sabes, imprimir Yo en Esto va a gustar no devolver nada porque lo que pasa es que yo en ese momento aún no se ha definido. Pero como pueden ver, puedo interactuar con el programa como fue como congelado en el tiempo en ese momento para
avanzar a la siguiente línea que reprimiste y Y lo que pasa es que ahora dice, sabes. Hola, P Y línea 10. Hola mundo. Entonces eso significa que yo igual a tres ya fue ejecutado y esto está a punto de ser ejecutado. Entonces ahora si hago imprimir ya verás que me dan tres. Entonces eso significa que esta línea de aquí fue ejecutada Y, um, ya
sabes, se le asigna tres dedos el I. Así que ahora doy clic siguiente. Dice visitado ical O bien significa que yo de quien más uno podemos comprobar si soy de hecho porque es que se ve bien. Entonces presiono siguiente. Ahora puedo ver cuál es el valor visitado porque ya estaba asignado a cuatro. Entonces, sí, puedes ver que te puede gustar, paso a paso. Mira lo que está pasando con la aplicación. Y de esa manera realmente puedes cazar cualquier bicho. Um, si quiero gustarme, si vi el aire o terminé, comprimirás. Ve qué significa continuar y luego verás que el, um, el programa continuará aunque parezca que se está ejecutando de nuevo. Entonces sí lo veré aquí. Y ahí tienes. Terminó la ejecución, y si veo aquí, cargó la página correcta. Um, es raro que ejecutara dos veces. Estoy adivinando porque odio recargar. A lo mejor, pero por lo general que
cuando la expresión, cuando se presiona, ver o se sigue y ejecuta eso una vez. Entonces, uh, recuerda, nena, es esa herramienta
realmente útil, realmente útil la pelea en el cabrón para poder señalar áreas que podrías tener .
28. Rodar con Vars: De acuerdo, saquemos esta línea. Um, en realidad, vamos a pensar todo esto y vamos a poner ah, hola mundo otra vez aquí para que se lo pregunte. Empezamos. Entonces ahora vamos a hacer un poco más fuera de un enrutamiento y comprobando cómo hacer diferentes rutas por diferentes cosas. Entonces digamos que ahora, en lugar de que esto le pregunte la página de índice, voy a tener que usar para ser la ruta hola. Entonces lo que eso significa es que, um, comprueba si eso recargado, está recargado. Vale, Um, lo que esto significa es ahora que en vez fuera en la ruta, que es esto, como, básicamente esta ruta aquí ahora los mundos hola subieron tu propio Hola o slash. Hola para prensa. Entra ahí. Voy a ver hola mundo allá. Y luego ponemos esto un poco más grande. Entonces lo que está pasando aquí es que acabo de cambiar la ruta. A esto se le llama ruta, que es el punto de acceso para esa función. Um, y puedo, ya
sabes, agregar otra aquí para que responda a la página principal porque ahora mismo, si voy a la página de inicio aquí, dice, ya
sabes, es un 44 no se encuentra porque no hay ruta aquí en esto en este guión que responde al al al índice. Entonces voy a crear otra ruta aquí, AP Raut, y voy a llamar a este índice, y ahora voy a regresar aquí. Página de índice. De acuerdo, así que eso es eso, Um, vamos a revisar la página. Ahora, veamos ese escape de control aún que cargamos. Entonces si voy a la página principal, veo y espero año y vamos a revisar becarios a Funciona. Sí, funciona perfectamente bien. Otra cosa genial que podemos hacer aquí es que podemos pasar virales. Por lo que el remolque estas rutas y esos rebeldes van a pasar a la a la función. Entonces veamos cómo funcionaría eso. Digamos, por ejemplo, que tenemos,
ah, ah, página de
perfil fuera de los usuarios como, ya
sabes, Twitter sí, y vamos a llamar a esa ruta, um slash user y luego slash Digamos que eso pasé likes, por ejemplo, user um Jorge, que es mi nombre de usuario en esta aplicación. Pero no quiero tener,ya
sabes, ya
sabes, recortar a Jorge y luego recortar ya sabes, Jack y todas las rutas posibles, ¿
verdad? Simplemente queremos tener una ruta que sirva a la página de perfil apropiada para cada
usuario específico . Entonces para eso, usamos esta noción off virales, y simplemente ponemos aquí slash um mayor o menor que el nombre de usuario mayor que. Y eso significa que ahora, cualquier cosa que, um slash usuario slash algo, alguna cadena o algún número, se va a pasar a la función. Pero entonces, ¿cómo consigue eso la función? Bueno, lo pasas como parámetro para eso. Entonces digamos que llamamos a este show user profile, y luego ponemos uso su nombre aquí, y a esa usuaria llamada Viable se le va a asignar lo que sea. Um, número o cadena se pasó después del letrero de corte aquí. Entonces y podemos comprobar eso regresando. Uh, pongamos nuestro venir aquí. Es una buena práctica comentar siempre cuáles son las funciones que también muestran que usan su perfil para Daddy User. Entonces voy a regresar, um,
usted, usted, señor, y luego más nombre de usuario. Um, en realidad
deberíamos poner, um, cadena ahí por si acaso. Es un número. A pesar de que creo que flats harán de esto un evento de cuerda aunque
sea ah, es un número, pero creo que es una buena práctica simplemente envolver cadena por si acaso. Entonces vamos a ver si eso recargado Ahí lo hizo. Um, entonces ahora voy a Así que si vuelvo a la página del índice, está funcionando. Bien. Entonces ahora voy a probarlo, Sir Jorge. Y como puedes ver, es primavera. Es conseguir eso viable del euro y pasarlo de vuelta a la función, y nos lo está devolviendo. Entonces Usuario Hori, si te pongo señor Jack aquí, consigo al usuario Jack. Entonces leamos otro. Pero esta vez, vamos a usar algo, um, frío, um, casting para que podamos, um, básicamente esperar qué tipo de virales nos van a pasar ahí. Entonces vamos a crear otro llamado Post, así que slash post. Y entonces en lugar de solo poner, voy a poner post I d. Aquí, ¿
verdad? Y eso va a ser un número. Sé que va a ser 123 un número ahí. Entonces en lugar de solo pasar eso, puedo ponerme anti en animales frontales y sabrá que este este este viable que se va a pasar aquí va a ser un número. Entonces ahora vamos a poner el post del show fino y luego pasamos el puesto yo d Y ahora, um, vamos a regresar, um, post. Y entonces qué pasaría si pongo aquí a ambos Saidi? Probablemente me pondría debería salir al aire porque es ah, está siendo pasa un entero, pero vamos a comprobarlo. Entonces ahora sí escuchamos post tres. Eso es correcto. Entonces puedo convertir en y remolcar una cuerda. Entonces eso significa que lo que sea que pasemos aquí, tiene que ser un número y extremo, sólo un número aquí. Entonces la forma en que podemos arreglar eso es poniendo la cuerda por aquí también. Entonces ahora si recargo, obtengo el post tres. Eso es perfecto. Y entonces, ¿qué pasaría si meto una cuerda ahí dentro? Digamos,
Jorge, Jorge, me pongo un 44 en esto porque de nuevo, Flask está esperando un entero ahí y no una fuerza así, Pero en lugar de romperme, me
está dando un lindo ya sabes, No pude encontrar esa página en vez solo rompiendo, así que eso funciona bastante bien. Algo que vas a usar,
um, um, muy a menudo es esto? Como, um, algo así como poner, agregar como una cadena a otra cadena y cosas así, pero no es tan legible. Um, Y tú, si tienes, como muchos, como, como, digamos, si quieres poner como algo aquí más y lo visitaste, um x veces y te hay que volver a poner esto X Así es que se vuelve engorroso. ¿ Verdad? Entonces una cosa con la que se puede dio por teléfono y existe presente en otros idiomas así es que se puede hacer como una impresión cuatro de la mañana. Entonces la forma en que haces eso es básicamente que pones donde donde quiera que vaya a
aparecer esa cadena , pones un por ciento s para string. Um, y luego solo ah, pones un porcentaje aquí, y luego pones nombre de usuario. No necesitamos poner la cuerda ahí porque esto es lo va a lanzar
automáticamente lo que sea viable aquí a una cuerda porque estamos diciendo que esto va a ser una fuerza. Um, están diciendo lo mismo. Um, déjame poner un venir aquí. Um, mostrar el post con el dado i d. el I d. Debe ser un entero. Entonces lo mismo aquí. Pero en lugar de poner un por ciento s, puedo hacer por ciento d, que es dígito. Y, um y puedo hacer entonces ahora por ciento y luego post yo d sin nada. Entonces veamos si eso funciona. Um, así que vamos a hacer, um usted, señor o oye, Perfecto. Y pongamos el post 15 y eso lo pillo. Entonces es Es mucho más limpio leer, y se puede poner como usted,
señor, señor, Persona s visitó por ciento las veces, ¿
verdad? Entonces y entonces, en ese caso, hay
que poner esto entre paréntesis y luego poner, um, este este capataz Así tomará como la primera cuerda es la cuerda y la digitalis. Esto lo hizo. Entonces eso funciona. Um um, bastante bien ahí. Sí. No queremos que encuentre la señorita. Entonces eso está bien. Um, así que eso es todo para este Este Ah, esta conferencia. Creo que has conseguido mucho. Podrás jugar, hacer algunas rutas personalizadas y ver por dónde lo que llegas ahí. Y ah, hablaremos de, um, algunas cosas nuevas a continuación
29. Url_for: De acuerdo, entonces veamos algo realmente útil, que se llama el cuatro de los Urales. Y el euro cuatro es una función que permite al matraz mirar, um ¿Qué? Ah, qué aspecto tiene el euro o cómo se ve la ruta para una
función específica, um, . Entonces, ¿qué? El modo en que vamos a revisar esa es la siguiente. Vamos a decir, saquemos este de aquí. Y así ves cómo tenemos arriba ruta te sirve apellido de usuario aquí, y él regresa al usuario, por lo que esa función se llama show user profile. Entonces lo que pasa es matraz ahora sabe que la función show user profile está asociada a esta ruta. Y va a haber en instancias donde no quieras,
como,pelar como, duro esta ruta,
esta chica de aquí usa cuando me gusta encontrar las funciones porque sabes que tu más puede cambiar a menudo. Y tal vez tengas a esa chica en muchos, muchos lugares. Um, y luego quieres cambiar eso, que eres l Vas a tener que,
como, cambiar, cambiar, sobre todo como en las plantillas, que vamos a ver más adelante. Entonces la forma en que podemos,
um, um, eso debilita um no código duro que, sino dejar que se muestre el matraz. Eso para nosotros es a través de, um, disfunción llamada euro para Así que si escuchamos retorno euro cuatro y luego ponemos Ah, esto básicamente toma al menos un parámetro, que es el nombre de la función. Ah, pero hay que ponerlo entre comillas. Entonces digamos mostrar perfil de usuario. Y entonces, um, eso sería todo. Pero la cosa es, como, que
esto requiere esta función específica. Mostrarte hasta ahora requiere que use el nombre para que podamos pasar eso también. Por lo que aquí pasaríamos. Eso es un, um, Richard. De acuerdo, así que ahora guardamos eso. Um, tenemos que importar tu para de matraz. Ahí lo tienes. Y así lo que pasa es ahora cuando cuando golpeo el y espero que no. Es que no te estoy poniendo slash usuario slash Richard. Sólo estoy señalando Regresar ¿Qué? El euro es para esta función con si paso este nombre de usuario, correcto. Entonces vayamos a la página del índice aquí, y estoy recibiendo un error, etc. Oh, tengo que poner un viable aquí. Nombre de usuario es igual Sí, Así que es No es un esto. A esto se le llama posicional ver aquí dice Toma uno carteles, un argumento, pero a dos se les dio una posición. El argumento significa que, um, este 1er 1 es el que toma esa posición. El primer puesto es la función. Pero después de eso, hay viejos argumentos que necesitan tener lo que es lo viable para eso, Um um, para ese parámetro que necesita la función. Por lo que tenemos que pasar. Nombre de usuario es igual a rico. Entonces vamos a revisar de nuevo. Y ahí va
usted, usted, señor Richard. Entonces básicamente está diciendo que el euro para la función show user profile si el Houston en Richer es pasado es slash usuario slash richard. Pero, ¿qué pasa si cambiamos estados? Toby usó su nombre en lugar de usuario. Entonces imagina que teníamos que estábamos referenciando que en eso cuando tienes, ya
sabes, el feed de Twitter tiene perfiles de titular y quieres gustarte, tener Si haces click en la foto, los
llevas al perfil. Si cambiamos nombre de
usuario, usuario a nombre de usuario aquí en este año en este rural, tendríamos que cambiar todas las plantillas que tienen el que slash usuario para slash nombre de usuario . Y eso sería ah, realmente grande, cosa
realmente grande,
dolorosa. Entonces si usamos tus viejos cuatro, eso significa que solo cambiamos esto y se actualizará automáticamente. Entonces si presiono recargar aquí, ¿
Ves? Ahora dice, usa el nombre Richard. Entonces recuerda, si estás usando a tu mayor, estás haciendo referencia a un euro por cualquier cosa. No hagas referencia, Ural. Referencia a la función y utilízate euro cuatro. Y eso te va a ahorrar muchos dolores de cabeza. Y por supuesto, no
ves esa utilidad ahora mismo porque no hemos hecho muchas cosas fuera con plantillas , Pero vas a ver mucho fuera de esto mientras continuamos con el curso.
30. Obtener método: De acuerdo, entonces vamos a empezar a mirar ahora, um formas y los métodos que usamos para interactuar con las formas así que formar una forma es básicamente algo ¿Dónde te sientes? Datos. Um, y luego tienes el botón de enviar. Um, esa es una funcionalidad muy básica que cualquier, um, marco
web necesita tener y y flash no es una excepción. Entonces,
um,
empecemos um, a jugar con esto un poco. Um, Así que voy a crear, digamos, la forma más conocida o o común es el registro para. Entonces, um, vamos a ver si puedo crear algo que me va a gustar, eliminar estas cosas aquí y vamos a crear una marca nueva. Entonces digamos que tenemos, um un Prout, que es slash Logan. Está bien. Y aquí, um, vamos a meternos en métodos. Por lo que xtalpi tiene múltiples métodos para interactuar. Um, entre el navegador, la página sobre el primero que estás sirviendo y el servidor que va a conseguir esos virales y es ah, es una larga discusión. No vamos a meternos en ah, los hoyos esperan espacio, pero vamos a ver a unos que son muy importantes. Y esos son el método get y el método post para esta lección. Vamos a ver el método get inicialmente. Así que ten conmigo a medida que vamos por esa ruta. Entonces aquí le estoy diciendo a flash que voy a tener una página de registro que espera, um, formularios para enviar usando el método get. Um, y te expliqué qué significa eso. Entonces aquí tenemos la función que no vamos a pasar ningún viable es aquí en el en el
euro real , pero los vamos a pasar usando para obtener el método get. Um, así que por ahora, sólo
voy a devolver un formulario. De acuerdo, voy a poner algo de uhm html aquí. Um, no
vamos a meternos mucho en HTML en este curso porque se trata más de back end, y se puede leer sobre, ya
sabes, cosas
básicas de HTML en. Ah, otro curso podría hacer uno yo mismo. Se hizo cargo de todas estas cosas. Entonces mantente atentos. Um, asegúrate de que
tú, ya sabes, suscríbete al boletín en de Zero. Yo o, um, o me sigo en Twitter desde Siria. El U para, ya
sabes, conseguir información sobre eso, pero ah, así que vamos a hacerlo. Aquí están cuatro. Método. Ponte con acción, Logan. Entonces acción significa ¿dónde va a publicar cuando presione? Um, eso y luego mis treinta nos agarran. Estábamos explicando antes. Entonces ahora voy a poner todo en una línea. Sé que se ve un poco feo. Vamos a hacerlo mejor en ah, en ah, próximo. Um uh, lección sobre plantillas. Entonces voy a poner un tipo de importación fuera de texto y con el nombre nombre nombre de usuario. Entonces eso es lo viable que vamos a estar pasando al, um, al So el guión. Um, iba a hacer algo aquí, así que lo hemos hecho en una línea. Pero eso es lo que voy a hacer sólo una línea, porque ya está casi hecho. Se va a terminar por toe api aquí para separarse. Y luego voy a hacer ah, tipo de
botón igual a enviar. Y luego voy a poner algo de carne aquí y botón en la forma final. De acuerdo, así que eso es igual que un liner largo que nos mostrará la entrada de nombre de usuario. Y luego someto botón. Um, así que veamos cómo se ve eso. Déjame ver si no rompí nada, Así que control escape, se reinicia. Entonces eso está bien. Y eso es para cortar e iniciar sesión Perfect. Por lo que ahora estos Utilizan el campo de nombre. Entonces escribo las cosas aquí y luego puedo presionar un minuto. Ahora, ¿qué pasó? A ver si presiono omitir, no pasa nada. Um, como nada que podamos. Podemos ver, sin embargo, aviso en la niña. Tengo un signo de interrogación ahora y dice nombre de usuario es igual al DF DF, que es la cadena que pasé el año. Pongamos algo más reconocible, como Jorge Submit. Como puedes ver, hace algo parecido. Despeja el campo aquí y luego dice signo de interrogación uso de químicos. Jorge. Entonces eso es lo que consigue método. Parece metanfetaminas. El método get es que va a meter todo Divi Valls,
um, um, en el formulario después de un signo de interrogación y enviarlo a eso Tu mayor con un signo que
definimos ahí. Entonces básicamente, es enviar uso de químicos. Jorge, um le dijo al guión poniéndolo en el sobre el euro fuera del, um, fuera de la forma. Um, entonces Pero no sé ¿Cómo puedo leer ese nombre de usuario? Siéntete ahí por eso. Vamos a usar algo llamado petición. Por lo que necesitamos Tomemos sus cuatro porque ya no lo estamos usando y agregar solicitud. Por lo que la solicitud es la forma en que ese matraz maneja todas estas solicitudes. Todo esto, como publicaciones de formularios o de acciones http. Y lo que vamos a hacer es, um vamos a comprobar básicamente los valores que nombre de usuario va a estar dentro de la solicitud
como , um nosotros en Ah, lista. OK, um, no
estamos moralmente arrepentidos como diccionario. Entonces voy a comprobar si hay valores en la solicitud. OK, entonces devolvamos el nombre de usuario que está presente en esa solicitud. Por lo que quería devolver uso su nombre es y luego voy a poner valores de solicitud fuera del uso su índice de
nombre. Por lo que los valores de solicitud básicamente está sosteniendo todos esos Todos esos de entrada. Ah, nombre con el nombre siendo el índice fuera de ese diccionario. Y luego si no hay valores, entonces vamos a devolver la forma. Entonces eso significa que la persona ha impresionado a algún idiota, así que veremos si eso funciona. Um, comprueba que recargado. Y ah, intentémoslo de nuevo sin nada aquí, Logan. De acuerdo, así que consigo el formulario es intentar con, um Ah, Sam. Algunos se conocieron. Impresionante. Entonces obtengo nombre de usuario es Sam Así que ves la primera, la primera versión de esa página, que fue esta Slash Rogaine. Está comprobando cuándo golpea. Eso son entonces cualquier valor sobre la solicitud. Y la respuesta es no, porque no hemos enviado nada. Entonces va en retornos que HDP um o hermano html string que nos renderiza, Ah, nos Un formulario en el navegador. Pero tan pronto como escriba algo aquí y presiono un guante, envía
eso de vuelta a la raya otra vez con el signo de interrogación es el nombre Jorge. Y luego los valores de solicitud sí tienen un valor. Por lo que entra en este bloque, que se devuelve nombre de usuario es y solicita valores fuera de tu apellido. Entonces así es como interactúas aquí con, um, con ese campo. Y luego podemos hacer cosas con eso. Con eso, con ese valor.
31. Método de post: Vale, una cosa que va, um, que íbamos a estar hablando es, um ya sabes, seguridad, ¿
verdad? Y una cosa que les diré es que las solicitudes de obtener no son muy seguras porque están enviando esa información sobre el propio euro. Entonces básicamente, ellos son el usuario, o incluso, ya
sabes, alguna, um, alguna persona que es como olfatear. Ah, alguna
manera fui a hablar aquí como hackers y cosas así, pero también,
como, como, ya
sabes, administradores de
sistemas que están revisando los registros de sus servidores, son va a poder ver el nombre de usuario aquí. Y si tenemos, como, contraseña también, como tú, van a ver pasaporte igual. Ya sabes, eres contraseña muy segura en texto plano. Entonces eso no es muy bueno. Eso no es muy seguro. Entonces queremos cambiar eso y hacer que eso sea un entorno más seguro Um ah, algo así como. Pero cómo se pasa entonces por el log en este uso de químicos, Jorge sin mostrarlo ahí. Y ahí es donde entra en juego el post. Entonces, ¿qué necesitamos cambiar aquí? Entonces lo primero o lo único que necesitamos cambiar en la forma es que vamos a poner post para método igual supone en lugar de conseguir. Ese es el primer cambio. El segundo cambia que necesitamos aquí afuera. Los métodos para aceptar tanto conseguir como posado. Pero, ¿por qué es eso? Estás pensando,
como, como, ¿no es ahora la publicación de ética de forma aquí? ¿ Por qué necesitamos llegar allí? Bueno,
así que la cosa es como cuando golpeas por primera vez el este Ural, el slash Logan, en realidad
estás usando una solicitud get. Y la razón detrás de eso es que la operación más básica que estás haciendo a través de http es oh, tráeme la página de inicio de sesión que me consiga la página de inicio de sesión es una solicitud get. Entonces, cada vez que golpeas una página, digamos que vas a Twitter. Te vas a Facebook, vas a Facebook perfil de slash. Esas son todas peticiones de obtener. Pero en el momento en que luego sientas algo y luego publicas usando el método post, envías algo, entonces se está usando el método post. Entonces, um, una forma en que vamos a poder comprobar um, aparte de la solicitud, valores es que vamos a poder,
um, um, comprobar el tipo de solicitud en el, um subrayado la función. Entonces en lugar de tener todos los valores de búsqueda, vamos a usar esto, que es más, um, el uso más frecuente si el método de solicitud es igual. Ah, post. Después devuelves el nombre de usuario. Y si estás golpeando, si estás bromeando la primera vez, es método de solicitud igual va a ser conseguir. Por lo que va a devolver este formulario. Entonces, veamos si eso funciona. Um, es para controlar la fuga aquí. Se ve bien. Entonces vamos a golpear el log in. Obtenemos el uso su nombre. No, espera. Ahí lo tienes. Y vamos a poner aquí. Um, digamos que Robert ha presionado someter uso. Se llama Robert. Entonces una cosa que notarás aquí es que no hay ningún nombre de usuario de signo de interrogación es igual a Robert. Y pero en cambio, esto fue recuperado perfectamente bien de los valores de solicitud. ¿ Cómo es eso posible? ¿ Dónde está ese razonamiento igual, habiendo pasado
Robert para que en realidad se haga a través de los, um, parámetros
post, que es cuál es un encabezado. Y esto va un poco a, ya
sabes, más especificaciones técnicas. Te recomiendo como si puedes pisar, uh oh. Se dejan a un lado algún tiempo para estudiar cómo es ser funciona. Es una muy buena herramienta de aprendizaje yo. Pero una cosa que puedes hacer aquí en chrome es que puedes ver los encabezados de las cosas están pasando. Y la forma en que haces eso es, um, vas a puedes ver desarrollador en entonces herramientas de desarrollador. También podemos usar, um, en los mercados. Voy a comentar me orale ven. Y
J, usualmente uso J porque es un celoso somos consoladores. Pero si presionas eso, vas a ver que algo así como aparece debajo y aquí, vas a poder ver cosas como las solicitudes de publicación y cosas así. Um, así que intentemos eso otra vez. Um, pero esta vez vamos a ver la información siendo Algún lo hizo. Entonces vamos a recargar aquí, ¿de acuerdo? Y luego vamos a poner,
uh, uh, Robert aquí y luego someternos. Entonces parece como diferentes tipos aquí,
um, elementos, elementos, cosas básicamente como el html fuera de la página y algunas otras cosas
con las que puedes jugar . Um, revisaremos un par de esto aquí, pero una cosa que te darás cuenta es que si haces click en, así que si tú Aquí hay una larga línea de cosas que están siendo ah servidas cuando golpeas esa página. Pero si presionas si haces clic en iniciar sesión aquí, que es la solicitud de inicio de sesión fuera de la página, verás que Ahora ves una parada de encabezado aquí y si te
desplazas hacia abajo, verás que hay, ya
sabes, General, eso fue usted sabe, la respuesta de solicitud Encabezados, que es lo que respondió fue respondida de vuelta de los encabezados de solicitud de página, que es algo así como más cerca de lo que estamos tratando de llegar, um, y luego finalmente, aquí, en la parte inferior verás los datos del formulario. Y si ven aquí, dice nombre de usuario Robert. Ahí es donde es. Por lo que es parte de un Se cancela el encabezado de datos del formulario. Um, el post está golpeando desde el tu l. Entonces eso significa que ninguna persona entre puede mirar los datos y aún así la aplicación va a poder leerlo. Por lo que post es el método preferido. Si estás enviando, ya
sabes, cosas que eso necesita algo de seguridad y puedes usar get por ejemplo, si eres el perfil de usuario de Twitter es slash users. Ese es Jorge. Um, eso es algo más que una cosa bien publicar públicamente para que puedas usar get para esas solicitudes
32. Introducción a las plantillas: De acuerdo, entonces vamos a ver Tempt. Es ahora, como pueden recordar,
tenemos este, como, como, feo nombre de usuario enviar formulario aquí, Um, y queremos que eso, ya
sabes, sea más fácil de actualizar. Y podrías tener un tipo diferente de, como el frente y los desarrolladores haciendo las plantillas versus tú eres te llevan a la parte trasera y la aplicación. Por lo que las plantillas vienen a rescatar. Y las plantillas son parte de un software, um, metodología llamada M V C, que básicamente es controlador de vista de modelo. Um, M v Mar separa que base operaciones de capa de presentación, que es como las plantillas de la lógica o controladores. Por lo que las vistas en este caso serían las plantillas, y el y los controladores serían los archivos reales, ya
sabes, ya
sabes,
p Y como este de aquí. Entonces no hemos visto las modelos aquí porque aún no tenemos que yo base, pero, um, vamos a echar un vistazo a eso en la siguiente sección. Entonces, antes de que
hagamos algo, vamos a borrar esto. Um, y vamos a calificar en un nuevo ah, enrutamiento por ahí. Entonces vamos a seguir adelante y crear una carpeta de plantillas. Tiene que estar en el nivel raíz, y tiene que llamarse plantillas. Um, podemos modificar eso a través de la configuración, pero no vamos a hacer eso. Simplemente vamos a hacer el valor predeterminado, y luego vamos a crear un nuevo archivo. Se llaman hola. Html y esta caídas son básicamente ext email. Pero tienen algún manejo viable. Son un oleaje. Entonces vamos a guardar esto y vamos a Ah, muy simple archivo xml de nuevo. No voy a, como, describir en mucho poco lo que estoy haciendo aquí, porque no es un front end,
Um claro, Um claro, Pero esto es como,
ah, ah, estructura
muy básica fuera de un, um de un siguiente correo electrónico. Cinco, um, plano. Entonces aquí, vamos a tener, uh podemos hacer condicionales aquí. Entonces, um, pero empecemos con algo sencillo. Entonces digamos solo cada uno Hola, mundo. Y, um, eso es básicamente todo. Um, digamos eso. Y ahora para que
rendericemos esa plantilla, vamos a crear una ruta de sólo hacer arriba, um llamado Hola. Y, um y vamos a definir hola para ser un, um básicamente devuelto esa plantilla. Entonces para hacer eso, usamos esta función llamada plantilla de render. Y, um, se renderiza significa como si no fuera directamente el mismo contenido. Pero python realmente hará algunos, digamos, computando encima o procesando. Entonces por eso se llama Plantilla Render. Pero en cualquier caso, um, vamos a pasar el hello html allá. Ah, y que lo que eso está haciendo va, como, acaba de devolver esta plantilla Ah, sa siguiente archivo de correo electrónico. Um, una cosa que necesitamos insertar aquí es la plantilla renderizada, que es una función de matraz que necesitamos dentro del script. Entonces eso es eso. Veamos si la aplicación se está ejecutando. Sí. Está funcionando bien. Entonces hagámoslo Hola aquí. Y ahí tienes. Entonces este es en realidad el templado que tenemos. Ah, eso tenemos que encontrar aquí. Um, y ,
uh, si ves la fuente de la página, verás que es exactamente el mismo contenido que ponemos a los extremófilos de Londres. Ahora, vamos a llevarlo un poco más lejos, y lo que vamos a hacer es ver cómo podemos poner viable visto ahí,
y, um, um, y algo así como, modificado, intento basado en pie ustream. Entonces cuando pones un solo vas a poder pasar. Hola. Nombre aquí. Y vamos a pasar ese nombre. Um, aquí dentro se puede hacer. Esto es algo que no creo que hayamos visto En realidad puedes pasar. El nombre no es igual a ninguno, lo
que significa que no se requiere. Entonces eso nos iba a permitir el dedo del pie para servir? Um, hola por sí mismo o Ah, hola. Nombre. Y voy a crear una nueva ruta para ese primer caso, porque de lo contrario sería necesitaríamos esa slash de entrenamiento después. Hola. Por lo que esto también es algo que puedes tener múltiples rutas asignadas a una función específica . Um, pero cualquier caso, Hola? Nombre igual conocido significa que podemos renderizar hola solo por sí mismo y hola. Nombre. Ah, hola. Slash nombre. Y el nombre se va a poblar con lo que pase después del hola y es ah, truco
muy importante. Se puede pasar aquí como pareja, básicamente lo viable que vamos a conseguir,
um, um, asignado a través del euro. Entonces lo que esto significa es nombre dentro de la plantilla va a ser igual al nombre que hemos pasado aquí. Um, pero sólo miren ustedes Así que para ustedes chicos, dedo del pie, veamos mejor. Eso se llama esta plantilla de nombre para que puedas ver la diferencia. Um, Y entonces lo que voy a poner aquí es que voy a tener mucho y luego acceder a ese viable dentro. Puso paréntesis demasiado rizadas. Pongo nombre aquí. De acuerdo, entonces hay un montón de cosas ahí dentro, pero
veamos cómo funciona eso, vemos que está funcionando bien. Y así ahora vamos a hacer hola, slash Jorge y no estamos viendo la bocina todo lo siento le asignamos hola. Es decir, plantilla
nombrada en lugar de nombre. Entonces ve cómo el nombre no está siendo justo aquí, pero plantilla de nombre se va a leer, Así que se está reiniciando. Intentemos eso otra vez. Y ahí tienes. Hola? O si pongo Hola, Robert, consigo a Robert. Entonces ya ves cómo no lo es. No es devolver este HTML exacto, pero en realidad está renderizando o reemplazando parte del html sobre la marcha con lo que sea por donde estemos pasando. Entonces realmente no encontraría su nombre, pero es una convención que quiero decir, es una vez que sepas que eso está pasando, solo
podemos usarlo así. Um, y lo último que voy a probar aquí es um voy a tener un condicional para recordar como
tenemos Hola y hola. Nombre si paso. Hola? Tomemos eso. Trabaja. Entonces, Richard, enfermera Richer. De acuerdo, entonces si paso hola sola. Ya veo Hola. Conocido, que es algo gracioso. No es muy agradable porque eso no es lo que queremos. Al igual que cuando se les conoce ahí dentro, eso no tiene sentido. Entonces lo que vamos a hacer, en realidad
somos capaces de hacer declaraciones condicionales, como si dentro de la plantilla. Y para hacer eso, lo
hacemos. En lugar de los dos corchetes, corchetes
rizados, hacemos porcentaje de corchete rizado. Y lo que vamos a hacer, es como si vamos a comprobar si nombre, lo que significa si nombre tiene algún valor, entonces imprime esto pero por lo demás y ver cómo es como si fuera pitón. Si entonces um entonces solo vamos a decir hola mundo y tienes que acabar con el ifs así que
tenemos que hacer. Y si Aquí. De acuerdo, entonces lo que está pasando ahí es, como, si hay una persona nombrada va a decir hola nombre, lo contrario va a mostrar Hola mundo. Um, así que vamos a ver si eso funciona. Um, si lo hago solo hola, me sale Hola, mundo. Si lo hago? Hola, Jorge. Yo consigo Hola, putita. Entonces eso es algo así como lo muy básico, pero esto es como, fundamentalmente cómo haces el ing de plantillas en matraz, y vamos a seguir, um, explorando las más cosas que podemos hacer con esto.
33. Plantilla de inicio: De acuerdo, así que ahora que sabemos hacer plantilla ing, um, vamos a tratar de hacer la esa forma que teníamos antes en convertirla, uh, parte de una plantilla. Entonces lo primero que queremos hacer es realmente queremos crear una nueva plantilla. Entonces sólo voy a borrar esto. Hola? Html. Y voy a crear aquí una nueva plantilla llamada Logging Exstein. Bueno, entonces es como una página de inicio de sesión, así que veamos eso. Um, voy a crear, como, un boilerplate. Es la página media cinco otra vez. Esto no es algo que necesites,
um, um, dominar
para los puntajes. Y cuando dije una página de blogueo de título, y así voy a hacer un formulario aquí. La acción va a ser, um es un log in. Bueno, no recuerden lo que dijimos de Europa antes. Esto es como un ejemplo perfecto de dónde podríamos usar el euro, y volveremos a eso en un segundo. Entonces tengo mi forma ahí. Sólo voy a poner un,
uh, uh, usar el nombre de la gente tipo. tipo de entrada es igual a texto, y voy a llamarlo usó su nombre y luego voy a hacer otro aquí, que es rápido Word. Y, um, nos
va a pasar la contraseña viable y finalmente necesita un botón para enviar el formulario. Y yo voy a llamar a eso Le Guin. Perfecto. Por lo que puedes ver eso en pantalla completa. Um, así que tengo mi formulario Acción va a ser lovin slash buscando. Entonces eso significa que cuando golpee enviar va a ir a la página amorosa de la slash, y va a pasar. Yo uso su nombre viable con alguna cadena y la contraseña viable con otra cadena. Y así vamos a cablear eso en nuestra aplicación. De acuerdo, así que sigamos adelante y cambiemos nuestro hola, p. ¿Por qué? Um, así que voy a crear una nueva función aquí. El top out va a ser, um, slash log in. Y luego voy a permitir dos métodos, uh, conseguir y publicar y voy a llamar a esta función de registro. Entonces voy a decir como lo hicimos antes de la solicitud de víspera, uh método dot se supone Significa que el usuario ya ha presionado enviar, Así que vamos a volver. Uh, usted, señor, porcentaje s, que va a ser una cadena encerrada. Entonces, ¿cómo obtenemos el valor del nombre de usuario? Entonces resulta que la,
um, um, solicitud tiene un objeto na o un diccionario más bien que se llama formulario de solicitud. Y en
ella, tendrá cualquier campo que haya enviado sobre la solicitud en este campo aquí. Entonces si sí solicitamos Lo sentimos si sí solicitamos ese nombre de usuario del formulario, entonces eso retendrá el valor de ese infield de Houston. Y, um de lo contrario, si no estamos recibiendo el post, significa que solo cargamos en la página. Bueno, solo para devolver Plantilla Render. Um, Logan HTM. Entonces vamos a ver cómo se ve eso. Um, eso inicia la aplicación aquí por teléfono. Hola? P y.
Y no hay aires ahí. Y vamos a conseguir la aplicación. Están todos aquí desde la acción. Um, no se encuentra aquí porque nosotros,
um,
especificamos um, que la única de ruta disponible para esta obligación es slash Logan. Entonces sí cortamos mirando ahí. Ahí vas. Por lo que estamos representando la plantilla como un formulario y podemos intentar hacer Jorge. 12345 No, otra vez. El usuario Jorge cargó. Entonces es leer correctamente ese campo de nombre de usuario aquí y Así tenemos una
forma inicial bastante buena con la que trabajar antes de seguir adelante. Algo que quiero cambiar aquí es este último Logan. ¿ Recuerdas cuando hablamos de tu l cuatro? Cómo no lo hicimos Eso no fue una buena práctica para poner dedo del pie tener real en cortejar chicas. Entonces siempre que escribiste A cada vez que escribes algo que corte sabes un tu l
off un off tipo de rutas de aplicación, debería ser una gran bandera roja para ti. Entonces, en cambio, lo que deberíamos usar aquí es el euro para método y rumor Cómo vimos eso antes. Entonces en este caso, vamos a poner tus cuatro, y luego necesitamos poner el nombre de la función, que en este caso, es la función de registro. Entonces si pongo, um, si pongo aquí el aceite para Le Guin y luego guardo, veamos si aquí tengo algún heredero. Estoy recibiendo años. Entonces me dejaron recargar la página y verás si veo la fuente de la página de vista que está mapeando
apropiadamente eso para slash Logan. Entonces eso es un gran beneficio de usar euro four en su lugar, fuera de la rebanada real de nuevo Porque lo que pasa es, ya
sabes, algo así como pensar esto último. Logan está salpicado a través de un montón de templos como cientos de plantillas. Y en cambio cambiamos a, um, registro. El subrayado, el uso o la derecha, um, ahora el usuario de registro de liberación del euro en lugar de iniciar sesión. Y si nos tocamos con eso, todos están aquí registrando usuario, veremos que se carga aquí. Pero no sólo eso, el tu L cuatro está actualizando automáticamente eso. Entonces eso es lo grande Eso es algo grande. Y siempre debemos usar tus cuatro siempre que te refieras a los Urales en tus plantillas e incluso dentro de tu obligación, um, controladores también.
34. Función de inicio: De acuerdo, um, entonces vamos a hacer un poco más de trabajo en la aplicación. Lo que queremos hacer en esta lección es hacer una función de registro como comprobar el
uso del enemigo spot en el bajo. Estaban funcionando bien. A pesar de que no vamos a una especie de, como, chequear como una aplicación real usando una base de datos, pero vamos a especie fuera de fingir. Y la forma en que vamos a hacer eso es que vamos a comprobar si el nombre de usuario y contraseña son los mismos que el usuario puede iniciar sesión. Es un poco como simple, pero nos permitirá comprobar cómo funcionan estas cosas. Entonces, um, voy a crear una función. Por lo que en tu app de matraz, puedes definir funciones que son, como internas. No tienen ninguna ruta. Son como funciones de ayuda, por así decirlo. Y quiero un gran este valle log in función que, um si pasas, uso el nombre y la contraseña. Se comprobará si el nombre de usuario es igual a la contraseña. Entonces regresa. Fiel a quien lo llamó, lo contrario regresará caídas. Entonces es un tipo muy simple, uh, tipo de función, Pero imagina que esto fuera Esto sería como a donde vas a la base de datos y buscas
el uso de nombre y registro de pasaporte y comprueba si hay violeta y luego regresas vuelta. Entonces así es como cómo funcionaría eso. Pero aquí solo íbamos a hacer que si el nombre de usuario y la contraseña son iguales, entonces al usuario le puede encantar. Entonces, um, lo que queremos hacer es que queremos comprobar esto usando el método post. Si se postea el método del registro, vamos a comprobar si es válido, Logan y luego tenemos el nombre de usuario. Entonces necesitamos pasar el formulario de punto de solicitud, usar su nombre como primer barómetro, y luego solicitar formulario,
uh, uh, palabra
rápida para,
um, um, dedo del pie tome la contraseña. Entonces si estos dos son iguales porque esto va a facturar por su lo mismo y devuelve verdadero, entonces lo que sea que esté debajo de esto se va a ejecutar. Entonces vamos a decir regreso. Bienvenido de nuevo. Um, y luego el usuario, el nombre del usuario, Así que solicita ese formulario. Usó el nombre, pero qué pasa si no está bien, Así que digamos que ponemos mal usando un pasaporte, lo que significa que no van a ser lo mismo. Entonces tenemos un bloque else, y podemos establecer un error aquí, por lo que error es igual a incorrecto. Uh, usa el nombre y la contraseña. Um, OK, entonces pero ¿qué pasa? Um, con este error, ¿dónde se muestra eso? Um, así que una cosa que queremos hacer es, um, queremos pasar, y se puede pasar contenido de las plantillas. Y solo necesitas asignar básicamente lo viable,
como, como, dentro de la plantilla, y luego qué? Eso equivale a dos. Por lo que en el mejor error iguala aire. Um, y luego una vez que estemos en la página de inicio de sesión o en la plantilla, básicamente
vamos a comprobar eso. No obstante, en la primera carrera, cuando la enfrente por primera vez, no
va a ejecutar esta parte aquí. Um, y el aire va a ser indefinido. Entonces podríamos llegar ahí. Entonces la forma de evitar eso es que podemos establecer el error desde el desde el get go go
antes incluso de hacerlo. ¿ Esto es parte del código? Pero vamos a comprobar qué pasa si nosotros si hacemos eso, así que vamos a ver si la aplicación se está ejecutando. Se recargó. Eso es perfecto. Y así vamos a hacer usuario de registro aquí. Uh, es Logan. Perdón. Inicie sesión. De acuerdo, así que esta es la era estaba hablando cierto de referencia de error tan local viable antes de la asignación . Entonces básicamente, entonces él diciendo, ya
sabes, me
estás diciendo que el aire es igual a error. No sé cuál es ese error, así que para evitar eso, ponemos error igual a ninguno al principio,
para que, para que, ya
sabes, el principio se le diga a ninguno. Y luego si sucede el aire, entonces pasaremos ese error incurriendo ni siquiera es pasaporte de vuelta a la plantilla. Y se puede imaginar que podría haber más errores. Al igual
que, ya
sabes, no sentiste el nombre de usuario ni los casos de uso más antiguos, pero por ahora, vamos a apegarnos a eso. Entonces veamos que recargado, uh, y va a recargar eso. Entonces ahora tenemos las plantillas adecuadas, y eso es todo bien y bueno. Entonces intentemos poner el like, el nombre
de usuario y la contraseña. Están diciendo carta para que eso vaya a funcionar igual. Ya ves, tu pasaporte significa que vamos a conseguir que el registro válido sea devuelto verdadero. Y va a decir regreso, quiero decir, va a decir, bienvenido de vuelta, uh, Jorge en este caso. Entonces intentemos eso todavía. Eso funciona perfectamente bien. Si vuelvo y pongo a Jorge y luego pongo a John aquí, entonces debería entrar ahí. Ah, pero ¿dónde está el aire que acabamos de definir aquí? Um, bueno, la cosa es que estamos pasando ese error aquí, pero no estamos,
um, um, poniendo en ninguna parte de la plantilla que debamos explicárselo de vuelta al usuario. Entonces, ¿cómo hacemos eso? Um, es bastante simple. Um, voy a poner un si bloque aquí si error. Eso significa que si hay algo que viable sostiene algo y sólo para que no nos
acordamos de cerrarlo lo cerraremos aquí. Y luego vamos a decir, um sólo voy a poner un texto en color rojo aquí, y voy a decir, Sólo imprime el aire que la plantilla es un ajuste. Um, otra cosita que quiero cambiar aquí es que voy a poner esto para escribir contraseña para que no puedas ver qué es lo que está siendo apretado. Y es justo como una cosa construida que tiene HTML. Um Entonces si hay un error pasado a través de la plantilla, entonces lo mostramos ahí. Eso es frijol definido por el controlador. El controlador siendo Hola, P Y. Así que vamos a ver. Eso se ve bien. Um, no herederos, así que Bueno, inténtalo una vez más. Entonces vamos a poner a Jorge y luego a Jorge. Mira eso. ¿ Te encuentras un poco como punto o asteriscos? Um, ese es el tipo de contraseña. Bueno, otra vez. Y yo era Eso fue perfecto. Um, Entonces qué pasa si ponemos el mal así Jorge y Ana ponen a prueba Perfecto. Entonces estoy consiguiendo el aire en letras rojas. Um, muy, ya
sabes, llamando mi atención. Y está mostrando ese error que definimos aquí. Por lo que nos estamos acercando a una buena aplicación de trabajo. Um, vamos a ver. De qué viene lo siguiente.
35. Redirigir después: De acuerdo, Lo siguiente que vamos a ver es,
um, um, redirigir a los usuarios después de que el registro y la contraseña tienen sean correctos. El motivo de eso es porque cuando entramos a nuestro enviar un formulario y se llega a la a la página o al servidor más bien que,
ah, ah, información de
post todavía anda por ahí. Y esto es algo que verás que pasa si no haces un redireccionamiento. Entonces dicen, yo estoy haciendo aquí,
Jorge Jorge, Jorge Jorge, que es el Logan correcto en un registro de prensa llego a la página de inicio de sesión con Welcome back, Jorge. Correcto. Pero, ¿qué pasa si me pego? Recargar? Ves, Ves este feo tipo de diálogo como que dice, ya
sabes, confirmar para re sumisión, que es que no se ve muy profesional. Además, es, ah, es un tema de seguridad porque, ya sabes, potencialmente
podrías tener datos por ahí. Entonces lo que normalmente hacemos después de un Logan exitoso es enviar al usuario a otra página que,
um, um, ese tipo de like puede, ah claro que esa información de publicación y y te mandan en tu camino. Entonces vamos a hacer eso en esta lección, y así es como hacemos eso. Entonces lo primero que vamos a hacer aquí es que vamos a tratar de agregar, um redirigir, que es una utilidad de matraz, y ese redireccionamiento nos enviará a cualquier oral que especifiques. Um, así que aquí, en lugar de regresar, bienvenido ,
Jorge o lo que sea, los waas de Houston vamos a tener un redireccionar gente y y es un poco gracioso porque has regresado el redireccionamiento. Y, um, creo que parte de la razón por la que esa es la forma de trabajar es porque es un hay un
código a un http llamado tres o cuatro, que es un redireccionamiento. Y creo que eso es lo que hace Flask ahí dentro, pero indica que tienes que usar retorno, redirigir y, um, Pero antes de que hagamos eso, vamos a, um vamos a crear una nueva ruta AP, que va a ser una página de aterrizaje de bienvenida. Entonces vamos a crear eso. Vamos a hacer ruta arriba en. Vamos a llamarlo bienvenido. Y luego vamos a poner un nombre de usuario ahí para que podamos pasar el nombre de usuario en eso en el euro, y luego haremos bien definido esto como una función llamada bienvenida y devolveremos esa plantilla. Plantilla de render. Um, puerta de
bienvenida, ext. Correo electrónico. cual aún no hemos creado y pasará el nombre de usuario. Dedo del pie eso a eso. Entonces ahora podemos Ahora, um, poner ese retorno. Redirigir. Entonces vamos a regresar. Redirigir a eso son l cuatro, que, como saben, durante el euro para una función específica, Um, y vamos a pasar. Nombre de usuario es igual al formulario de solicitud. Ah,
acostúmbrate . Está bien. Entonces lo que está pasando aquí es que estamos redirigiendo el euro. Um, cuatro fuera de esta función. Bienvenida. Que es éste de aquí. Y estamos pasando el nombre de usuario, que es el, um, este primer método. Es este este nombre de usuario aquí, que ah, resulta ser el nombre de usuario. Ah, parámetro para ese método. Entonces va a leer eso ahí dentro. Um, mira, no
tenemos aire aquí euro 40 así que no tenemos euro cuatro definido aquí todavía. Entonces ahí lo tienes. Um, entonces ahora hemos configurado nuestro redireccionamiento de retorno, Y lo que pasaría es cuando el nombre de usuario y la contraseña sean correctos, regresará, o nos redirigirás a esta página. Bienvenido slash. Ya sabes, nombre de
usuario Jorge o Jack, o lo que sea el uso de enemigos y luego devolverle una plantilla. Um, que eso definirá ahora. Entonces veamos cómo se ve esa plantilla. Vamos a hacer algo bastante sencillo. Entonces somos un gran archivo nuevo aquí, y lo vamos a llamar Welcome, HTML, y vamos a abrir eso, y simplemente genial un archivo HTML muy simple. Um, tendrá, uh, título Oriente. Página de bienvenida. Y vamos a tener la última cuerda que diga bienvenida y usar su nombre, que es lo viable que pasaban del dedo del pie al templo. Entonces eso es todo. A ver si tenemos algún error. Se ve bien. Entonces ahora volveremos a la tala y vamos a probar con Jorge. Jorge, Uh, ahí tienes. Y ahora estamos más allá de dos o redirigidos a dar la bienvenida a slash Jorge y se ve bienvenido Jorge ahí . Ahora, ¿qué pasa si golpeo recargar? Nada. Pero no veo nada porque es una página estática. Ya es como si no hubiera datos de post ahí. Entonces esto es algo en lo que siempre vas a estar dio haciendo cuando hagas
envío de formularios es redirigir a los usuarios para que digamos que la página real donde, um, donde vas a empezar a hacer cualquier tipo fuera como operaciones y cosas. Entonces recuerda que es un es una buena regla dedo del pie
36. Mensajes de Flash: una operación venida que queremos poder hacer es comunicarnos con el usuario. Um, cuando algo como sucedió, Por ejemplo, si te encerraste con éxito, Pero quieres hacerlo en la página siguiente, por ejemplo, en este caso, queremos para poder cuando la gente golpea esto. Bienvenida, chica. Imagina eso. Esa es la página principal fuera de tu aplicación. Se quiere poder pasar mensajes y diferentes mensajes dependiendo de lo que la última Operación Waas y porque, um, x t p es no mantiene ningún tipo de, como estado entre diferentes páginas. Necesitas poder almacenar eso en algún lugar. Esos esos mensajes de notificación y frasco ofrece una, uh, especie de subsistema llamado mensajes flash que te permiten hacer exactamente eso. Entonces vamos a hacer un mensaje medido por flash aquí para que ustedes puedan ver cómo funciona eso . Entonces para que podamos usar mensajes flash, tenemos que agregar flash. Aquí están como una de las bibliotecas que vamos a estar importando y ah, usar flash es muy, muy sencillo. Um, lo que vamos a hacer aquí es que después del método Logan válido, Um, o si condicional, sólo
vamos a decir flash, y luego ponemos logueado exitosamente. Ahora, lo que es lo que eso va a hacer es ir a, um, almacenar esos mensajes flash en una cookie on a session. En la próxima vez que se cargue una página que recupere o quiera obtener esos mensajes, obtendrá cualquier mensaje, cualquier mensaje que haya destellado en páginas anteriores y volverá a cero,
como, como, restablecerlo y usted puede tener más de uno. Entonces si pones flash aquí con éxito conectado, Pero tenías un anterior mensajes flash diciendo tan exitosamente registrado y no has aterrizado en una página donde se recuperan esos mensajes flash, entonces los verás todos. Um, pero necesitamos hacer esa recuperación, um, algo así como código. Y lo vamos a hacer aquí en la página de bienvenida. Entonces lo que voy a hacer es que me quieran a un genérico, um um, grupo, olvidando todos los mensajes flash y básicamente ponerlos en el en la página. Entonces vamos a usar esto. Um, este método llamado con mensajes iguales get messages flash y get flash messages es como el
método incorporado, um, disponible en la plantilla para obtener todos los mensajes. Entonces básicamente, digo establecer los mensajes como un viable que contenga todos los mensajes flash que tenemos hasta aquí, Um y luego cuando termine con aquí. Entonces eso es Ah, eso es básicamente un bucle. Y ahora voy a comprobar si los mensajes para que si no hay mensajes, sólo
nos quedemos con este fragmento. Um, y ahora voy a ¿Es ese un pedido en lista de pedidos en el siguiente correo electrónico? Y puedes buscar eso. Um, Y luego cuando definí esto como una clase llamada Flashes, um, y luego para cada mensaje en ese mensaje es, um, básicamente es una lista o una especie de como todos los mensajes están volcando que en el mensaje. Entonces para mensaje en mensajes, vamos a conseguir cada mensaje. Ahí es donde esa lista,
um, um, y vamos a un final por aquí para que no podamos perder la estructura y vamos a abollar el dedo del pie en u l dos y que tú en la parte superior. Y ahora tenemos nuestro mensaje. Entonces simplemente,
um,
insertamos um, un nuevo um, elemento en ese elemento de lista de lista, e imprimimos el mensaje ahí. Perfecto. Entonces eso debería ser todo, um Así que otra vez aquí, estamos listos. Estamos configurando los mensajes viables para obtener todos los mensajes flash como lista. Si tenemos mensajes manera de tener esa lista, entonces voy a crear un pozo nuevo o en lista de pedidos, y luego voy a ir por cada mensajería. Ese mensaje está impreso. Assad, Eso es un individualizado. Entonces veamos si aquí tenemos algún error. No se parece. Y no, no
hemos guardado esto. ¿ Verdad? Entonces ahora péguense. Está bien. Perfecto. Entonces ahora intentemos eso otra vez. Entonces vamos a ir a iniciar sesión y cuando sea a Jorge, Jorge y mirarlo. Pero, ¿qué pasó aquí? La sesión no está disponible porque no se estableció ninguna clave secreta. De acuerdo, entonces esto es algo que vas a tener que poner. Y yo, uh hice esto a propósito para que no pudieras,
um, um, algo así como correr el dedo del pie esta causa es Es muy común. Um, siempre
me gusta, olvídanos. Bueno, entonces lo que necesitamos hacer es ponernos en el, um aquí en el principal principal. Um, el método, vamos a tener que pasar un nuevo, um viable llamado app secret. Entonces digamos que hagamos esto así arriba. Secret Key básicamente codificará cualquier sesión que tengas para que los usuarios no
puedan , um, recuperar esos la información en esas sesiones, y luego te mostraré cómo generar buen secreto llaves. Pero por ahora, solo
vamos a poner un poco de cuerda clave muy simple y
súper secreta aquí, y esa va a ser nuestra llave súper secreta. Por supuesto, no
es muy bueno. Deberíamos tener una combinación fuera como personajes y números, cosas así. Pero por ahora, diremos, esa es una llave secreta. Entonces ahora volvemos y volvamos a intentarlo de nuevo. O aquí o aquí y ahora está funcionando perfectamente bien. Nancy, dice, ingresó con éxito. Sí, un poco como darting ahí porque es una lista fuera de artículos. Pero como pueden ver que ese mensaje fue,
um,
fue um, recuperado de forma segura de la página de registro anterior. Ahora, ¿qué crees que pasa si refresco la página? Volveré a recibir ese mensaje o no? Bueno, veamos si recargo. Ah, eso desapareció. Bueno, déjame volver a cargar. Oh, no lo veo. Entonces mira, así funcionan los mensajes. Es como si los recogieras. Estás restableciendo esa lista, y ahora te equivocas. Ya no tienes ese mensaje, que es perfectamente, sabes, así es como debería funcionar. Um, deberíamos tener eso, um, eso funcionalmente en su lugar. Entonces así estás seguro de que vamos a, um vamos a pasar un mensaje va a ser consumido por la otra página. Y luego después de eso, es Ah, es un reinicio, y no lo hacemos No mostramos de nuevo al usuario.
37. Mejor HTML: De acuerdo, vamos a tener que, um, empezar a poner un poco una estructura mejor en nuestro HTML. Entonces si quieres saltarte esta, um, esta lección, está bien. Ah, sólo
voy a poner un poquito para mejor. Es femenino aquí en nuestra página de registro, Um, para que sea más conforme estándar. Y, ya
sabes, siempre
es importante ser estándar conforme, um, en cualquier código que hagamos. Entonces vamos a sumar cuando lo probó. Html, um, designador aquí al principio, y luego cerramos eso hacia abajo, entonces generalmente tienes una cabeza, que es donde se define el título y otro, um, otro tipo de atributos para la página. Y entonces tenemos que hacer cuerpo, que es donde está el real un cuerpo de la página. Y cerramos eso, uh, y, um, y finalmente, quiero tener un poco como un título o un pelo er, y voy a llamar a esto, ya
sabes, el acto may company, um, en honor a los de esos famosos ah, caricaturas. Ya sabes, como el corredor de carretera. Um, y voy a poner aquí página de registro. La empresa Acme le pidió a EU un título así que OK, ahora tenemos Ah mejor página html. Tenemos nuestra declaración HTML del inicio del fin. Tenemos una cabeza con el título, y luego tenemos el cuerpo y en cada uno, Um, así que vamos a tener vamos a tener eso. A ver si eso se ve bien. Y si golpeamos iniciar sesión, veremos que se ve un poco mejor. Pero sobre todo, ahora
es algo así como conforme a las normas. Um, pero el punto que voy a hacer aquí todavía no ves es que, um ya sabes, tendríamos que hacer esto también con la página de bienvenida, porque ya sabes, esa página es exactamente la misma. Entonces, ya
sabes, necesitamos,
como, como, tal vez copiar todo esto e informar aquí. Bueno, el título en este caso es la página de bienvenida. Por lo que tendría que hacer está aquí. Pero se puede ver cómo esto puede volverse realmente repetitivo y no muy escalable. Entonces, por ejemplo, ¿qué pasa si quieres cambiar? Conoces esta parte aquí que dice la compañía Acme para todos los títulos, por ejemplo, o no quieres que quieras tener estos h un título. A lo mejor con el logo de la empresa en cada una de las páginas. Al igual que rápidamente se convertirá en un desastre poder, um, sostener esto. Entonces lo que vamos a ver es algo que, um, eso nos va a ayudar, um, lidiar con esto. Y eso se llama, um template Herencia. Entonces, ¿a ver qué? Eso es lo que parece.
38. Bloquear: un gatillo final quiero mostrarles chicos es y van a ver esto. Te vas a encontrar,
um, um, en esta situación,
creo, creo, bastante a menudo, sobre todo cuando comienzas a hacer bibliotecas javascript y cosas así. Um, recuerda cómo dijimos que si yo tuviera el título el título del bloque aquí, sin el hallazgo de la cabeza, sería inteligentemente algo así como insertado aquí. Pero qué pasa si quiero definir algunas otras cosas que quiero insertar en esto en este título debajo,
como, digamos, ya
sabes, ya
sabes, biblioteca
javascript o algo así, pero de el de la plantilla en sí, um, bueno, una forma en que podríamos hacerlo es que podríamos tener un ya sabes, cabeza de bloqueo aquí. ¿ Verdad? Y digamos que tenemos, uh um y bloqueamos, ¿
verdad? Y luego tenemos me va a gustar simplemente una etiqueta javascript script, pero no va a hacer nada de fantasía. Al igual que solo tener algo que es un marcador de posición de nuestra X equivale a uno y script. ¿ Verdad? Um,
Entonces, ¿qué pasa si hago eso? Bueno, el problema que vamos a apoderarnos de que esto va a reemplazar toda su cabeza, y no se va a ir. Um, cualquier cosa por el título. Al igual Imagina que está haciendo esto como si estuviera reemplazando todo esto con esto. Este Ah, estos trabajos eran probables que estamos poniendo aquí, así que y lo puedes ver aquí. Al igual, si me refresco, um si, si, como hidro. Ya no tengo el título ahí. Um, es que está reemplazando toda la cabeza por ella, Entonces eso no es muy bueno y mira, como ahora tenemos este feo título, que es el euro. Entonces quiero poder insertar este JavaScript pensando que están aquí, pero al mismo tiempo tener mi título de bloque,
um, en su Y, en su Y, um entonces la forma en que lo haces es llamar a un, uh un método llamado super. Entonces si lo hacemos, um, es como si fuera como un super viable. Entonces, ¿qué va a pasar? Estos Va a reemplazar esto la cabeza por esto, pero luego va a dejar al título la etiqueta del título, um, para ser un Toby como, um, permitido ser modificado por llamada posterior. Entonces veamos que en acción recibió el título ahora se ve bien. Y ahí tienes. Ver, Ahora ten mi título si veo la fuente ser pagada fuente, tengo mi tipo atornillado aquí y luego mi título aquí. También podríamos hacerlo al revés. Um, si querías titularte primero por alguna razón, puedes hacer esto, verdad? Entonces primero estamos diciendo,
OK, OK, el cuadro de título, reemplácelo por esto y luego por la cabeza hacer esta inserción en la parte de la cabeza, pero llamado el super, que va a, como, insertar el título de nuevo. Y si recargamos ahora aquí veremos el mismo resultado. Tenemos derecho el título correcto. Pero si vemos la fuente de la página Ver, verás que Oh, el título sigue apareciendo debajo. Eso es interesante. Esperaba primero el título Toby Toby,
pero no, en realidad, en realidad, ¿qué es qué? El modo en que haríamos el cambio de orden en contra sería esto exactamente porque entonces supers está llamando como la pieza del título y luego está insertando la cosa después. Entonces déjame recargar las llagas de vista todavía, y ahí tienes, Um, y eso es poner un inventor ahí para que se vea un poco más bonito. Perfecto. Entonces mira, así es como te gusta tu ableto,
um, um, para modificar ataque dentro de un bloque, pero también algo así como llamar al super método para que también puedas hacer más cosas con él.
39. Plantillas de herencia: Entonces como vimos en lo profundo en la lección de brisa, Nosotros, um estamos tratando de arreglar, um, las páginas, la página de inicio de sesión para ser más impresionante, cumpliendo de lo que la teníamos. Es como requerido, um, etiquetas para propiamente Es el macho. Pero como vimos, es muy repetitivamente o en no calificada capaz de estar haciendo esto por cada página que
hacemos . Entonces la forma en que nosotros, um, que resolvemos este problema es que usamos algo llamado Herencia de Plantillas y herencia de Tim Blizter solo significa que vamos a tener una plantilla básicamente basada en nosotros que tiene la cosas comunes y luego cada página adicional Bueno, igual que extender o agregar al dedo del pie ese tipo existente de página base como. Aún así, la mejor manera de ver o entender esto es ver en acción. Entonces vamos a crear nuestra página base html y ver cómo se ve eso. Entonces vamos a crear una plantilla html base y tan nuevo archivo y vamos a llamar a este html
base y vamos a copiar y pegar un montón de las cosas que sí escuchamos antes. Um, así que vamos a tener tipo de doc que tenemos adelante, y luego voy a tener un cuerpo, y vamos a tener end HD. Entonces eso es como la estructura básica, muy, muy básica. Pero, um, empecemos a hacer algún otro relleno más interesante aquí. Entonces, por ejemplo, en la cabeza, um, puedo hacer algo así como título, ¿no? Y entonces pondría algo como, ya
sabes, la empresa Acme. No obstante, eso significa que los mismos títulos que van aparecen en cada página. Pero quiero poder hacer este tipo de cosas, como bloguear Paige Dash y en la página de bienvenida. Página de bienvenida dash. Correcto. Eso y luego imprimir la empresa Acme. Entonces la forma en que lo hacemos con la plantilla base es que definimos áreas donde las cosas pueden ser sustituidas por el por los Niños o por las plantillas heredadoras y modificar lo temporal en esos lugares. Entonces la forma en que haces eso es que usamos este, um, este comando llamado bloque, y luego pones un nombre como para ese bloque. Entonces si hago título de bloque y luego se define el final del mismo y bloque, lo que va a pasar es que en cualquier momento pongamos un espacio y luego el guión aquí. Entonces en cualquier momento ahora que una página como la página de inicio de sesión hereda que vamos a tener reemplazar, Um ,
básicamente, esta parte que cambia con eso con ese azulejo de bloque y el resto va a ser, um nos va a imprimir ya que nosotros está en el sobre la base en la plantilla base. Entonces, um, voy a seguir adelante y definir todo este bloque, um, para la cabeza, porque quiero poder también tal vez en atributos más antiguos aquí, tal vez inyectando JavaScript bibliotecas, cosas así. Y luego voy a terminar. Mira aquí, Um, así que ahora en el cuerpo, quiero tener ese h uno, que es, ya
sabes, el encabezado para todas las páginas. Yo quería ser la empresa Acme a través de los tableros o no hay cambios allí. Y siempre quiero tener si hay algún mensaje flash toe visualizarlos aquí. Entonces solo voy a copiar y pegar esta parte porque es va a funcionar igual que lo es . Y en realidad lo estoy cortando a los cerdos de bienvenida, y lo voy a poner aquí. Es, uh, inventar eso. Está bien. Y, um ¿quería encontrar una zona a pesar de que no es, ya
sabes, requerida. Es Es Es un patrón muy común otra vez, tener un Dave que tenga todo el tipo de, como, el contenido principal. Y voy a llamar a este bloque uh, contenido. Está bien. Y, um, lo
último que voy a hacer es ir a un er de comida que es un html newish, um, atributos. Y voy a llamar a esto también comida bloqueada o porque quiero poder tal vez
anularla ,
uh, uh, no impresa en absoluto. O, um, o agregarle cosas. Pero aquí, voy a tener un signo de derechos de autor y copyright 2014 por en un pequeño hiperenlace allá. Uh uh, ya
sabes, vuelta May Co y, uh, el acto me viene perfecto. Entonces ahora tengo mi base. Html se ve realmente bien. Um, tengo por delante que puedo anular con un título. Tengo un flash mensajes para todas las páginas ya construidas en Tener un Contin, aireado y un pie de página. Entonces, empecemos con la página de inicio de sesión. Entonces, ¿cómo consigo este básico parecer enfermo aquí? Entonces usamos una palabra clave fría se extiende, y así voy a poder básicamente Ah, sacar todo esto y voy a decir,
uh, uh, extiende base html y lo pones más abajo hacia arriba. Necesito poner cotizaciones. Perdón. Y Flats va a encontrar cualquier plantilla que tengas con ese nombre Basij hembra. Y va a gustar, que sea lo evidente para esto para este intento. Entonces para el título, um, yendo a, um, bloque, oops, bloque, um, título. Y luego voy a poner,
um, um, vamos a llamarlo iniciar sesión y luego terminar suerte y mira,
y lo que es lo que eso va a hacer es como, ya ves como tengo,
um, um, registro de títulos de
bloque aquí. Se va a entrar aquí, pero noten que no tuve que incluir un blockhead y block al principio porque eso significa que si tengo algunos,
algunos internos, um, tag como titulo flats serán lo suficientemente inteligente como para saber que no lo es. No queremos reemplazar todo el asunto. Solo queremos reemplazar esta línea aquí, y eso es algo bastante útil. Um, para nosotros, ya no
necesitamos dirigirnos porque se está definiendo la cabeza, sabes, aquí. Y, um, no
necesitamos nada de esto Y lo que queremos hacer es que vamos a tener un esto definido como el contenido, así que bloqueen contenido quién y eso va a ser impreso o insertado en esta área. Aquí. Bloquear contenido. Tengo la acción del formulario de acción. Um, ya no
necesito este cuerpo ni HTML, y voy a terminar una cuadra aquí. Enfriar. Por lo que nos ocuparemos de la página de bienvenida un poco más tarde. Nosotros sólo queremos ver que las denuncias hubo está funcionando bien. Entonces vamos a ver si tenemos algún error. Se ve bien. Entonces recarguemos la página de inicio de sesión y veamos qué pasa. Wow. Perfecto. Por lo que ahora tienes la escritura Kobe ahí, que viene de la de la plantilla. Tengo tala discontinua. La empresa Acme, que es el título que yo quería tener. Y, um y todo lo demás debería funcionar. Uh, lo mismo. Entonces si hago Jorge Jorge, puedo iniciar sesión y recibo el mensaje. A pesar de que ese mensaje viene de la página de bienvenida. Entonces eso no cuenta. Pero terminémoslo y veamos cómo hacemos el trabajo en página. De acuerdo, así que hagámoslo ahora. El sitio de bienvenida um, así que aquí. No necesito esto, pero necesito tener los extendidos. Yo sólo voy a copiar eso desde aquí, y luego voy a tener un título. Y cuando pongo esto nosotros la página de bienvenida, um y, um ve, Y necesito necesito que este sea el contenido, ¿
verdad? Bloquear contenido. Um, y eso es todo. ¿ Ves lo sencillo que se ve ahora? Es, ah, bastante reducido. Y ahora tenemos, um tenemos una manera muy fácil de especie de, como, extender esto. Básicamente, Melanie va a verse exactamente igual a través de diferentes páginas. Entonces, um, veamos si tenemos un error y volveremos a hacer el registro. Um, así que vamos a Jorge Jorge Logan. A ver cómo siempre tengo ahora el H aquí. El encabezado. Tengo la bienvenida Jorge y tengo mi comida. O que aparece en cada página. Si tuviera recarga, debería deshacerme del mensaje flash. Ahí vas. Se ve bien.
40. Cookies: De acuerdo, entonces ahora vamos a probar algo nuevo, que es, um, usar cookies para poder rastrear el cierre de sesión del usuario. Y las galletas son básicamente pequeñas. Los archivos se guardan, Um, localmente en tu computadora que solo responden al dominio con el que están asociados. Entonces en este caso, estarías con nuestra aplicación I d o más bien hola de Siria, el dominio u C nueve puntos io. Entonces, um, vamos a aprender a usar cookies. Aunque, um, es más seguro o seguro usar sesiones. Pero es ah, es bueno aprender a usar cookies de todos modos, porque las sesiones se basan en cookies. Y es algo que definitivamente deberías tener. Ah, y todo propio sobre cómo hacerlo Para que podamos usar cookies con matraz, necesitamos ah, utilizar una biblioteca A o una función llamada make response. Y hacer respuesta te permite modificar la respuesta, um, para que puedas establecer,
um, um, ya
sabes, Rex. Está bien como, um, como galletas con el mismo tipo de como en el mismo. Es un viaje de ida y vuelta, um, o en la misma petición. Entonces vamos a hacer respuesta a las bibliotecas de matraz aquí en las tapas. Y, um entonces vamos a reemplazar este retorno ¿Resucitar? Ah, eres un cuatro con un básicamente, vamos a crear un objeto de respuesta. Entonces vamos a hacer respuesta igual, hacer respuesta, y luego lo mismo Europa de bienvenida. Um, ese todo eso, todo
ese asunto. Y básicamente, estamos haciendo soy una respuesta para la parte de redireccionamiento de la cosa. Y ahora también estamos ahora también vamos a poner una galleta, y la forma en que vamos a hacer eso es que vamos a hacer respuesta. Esa dicha galleta. Y luego ponemos el nombre de la galleta y un valor. Entonces en este caso es formulario de solicitud, uh, obtener nombre de usuario, y cerramos eso, y luego regresamos respuesta. Entonces así es como lo hacemos. Entonces, como puedes ver, ya
sabes, manera responsable. En primer lugar, crear un objeto make response que tenga el euro four. Bienvenido. Lo cual va a ser como un redireccionamiento. Conozco la misma respuesta. También etiquetamos en este sitio. Cookie, Utilice el nombre. Um, así
lo dijo. También vamos a crear una función look out que nos permitirá,
como, como, básicamente cerrar sesión Y un cierre de sesión en este caso sería eliminar la cookie,
esa cookie de nombre de usuario en, um, en el aplicación tan discreta, que orgulloso slash Mira hacia fuera y, uh, a otros hallazgos en cuanto a cerrar sesión método. Y éramos más o menos lo mismo que vamos a Ah, responde, um igual hacer respuesta y luego cada directo Ah, eres viejo para, uh, Logan. Entonces en este caso, vamos a mandar a la persona dedo del pie la página de inicio de sesión cuando ellos miren hacia fuera, y luego vamos a responder, dijo Cookie. Y es curioso cómo ah, el camino ahí te las galletas líder. Dijiste que es, um, caducidad a cero. Y, um y pones el valor es negro. Este tercer parámetro caduca permite establecer el tiempo de vida de las cookies. Um y ya sabes, puedes Básicamente puedes poner una galleta por, como, una hora o un día, etcétera. Creo que eso es ah, eso son segundos. Y luego devuelves la respuesta. De acuerdo, um, también
necesitamos cambiar el, um la bienvenida. Um, así que vamos a estar haciendo bienvenido tipo de como convertirnos en la ruta fuera del o en el índice fuera de la aplicación. Nos vamos a encontrar un corte. Y lo que vamos a hacer aquí es que vamos a obtener el nombre de usuario de la cookie y la forma de obtener un valor de cookies. Eso sí lo solicita. Cookie start get use el nombre. Y si eso está vacío, entonces eso significa que usan su nombre no se ha establecido. Entonces vamos a poner esto a si hay un nombre de usuario en esa cookie de lo que hacemos esto más. Regresamos un redireccionamiento a la chica para buscar. Está bien. Um bien, así que vamos a ver si tenemos algún error. Um, que estuvimos bien. Entonces ahora vamos a ir a la raíz del dedo del pie la página principal y ver cómo me manda de vuelta a iniciar sesión porque no tengo ninguna cookie dicho, um y hay una manera de ver las cookies. Si vas a, um en chrome en el archivo, um, ver desarrollador, herramientas de
desarrollador. Puedes abrir esto básicamente estos ayudante, y luego podemos ir a,
uh, uh, recurso es cool keys y dar click en tu aplicación. Y eso es en contra de cualquiera. Está ahí, señor. Ahí hay algunas galletas ahí aceptarían, pero no son realmente de nuestra aplicación. Se parecen más a cosas de ayuda de From Cloud nueve. Entonces vamos a poder rastrear cuándo dijo la galleta ahí dentro. Um, y debería tener el nombre usado su nombre. Entonces el inicio de sesión directo, um, el yo mi estatus por un segundo, y luego vamos a hacer Jorge cortejando el eslogan aliento. Y hay algo mal aquí. Ver? ¿ Por qué es imprimiendo nombre de usuario igual dolor, supongo. Ahí redirecciona. Um
, no está funcionando Bueno. Ah, ya veo que tienes un tipo de aquí. Um, yo sí debería hacer respuesta. No euro cuatro, sino más bien redirigir. Entonces es hacer respuesta. Redireccionarte, Earl por el trabajo. Y ya no necesito usar su nombre aquí porque saqué eso. Entonces eso es, um, ver esa bienvenida. Ya no tiene ese piloto. Perdón por eso. Um, así respuesta. Águilas hacen respuesta. Redirigir a Europa para recibir la bienvenida. Y ese debería ser Ese es tu trabajo. Entonces veamos aquí otra vez. Um, entonces supongo que si manera lo ve aquí que se dijo el nombre de usuario, ¿
Ves cómo nombre de usuario? Dijo con Jorge. Entonces, eliminemos que podemos presionar un poco X aquí del pie de la sesión de líder. Y intentemos eso otra vez. Entonces usa el nombre Jorge. Contraseña Jorge. No hay ganancia. Y ahora está funcionando. Por lo que me metí en el a la página de inicio y noto que no tenemos ningún nombre de usuario de slash ni slash. Bienvenido slash Jorge. Esto se está leyendo de la de la cookie. Y podemos comprobar aquí que lo cocinan set aquí mismo. Nombre de usuario y putita. Um, así que eso está funcionando perfectamente bien. De acuerdo, así que vamos a la derecha, encabezando directamente la función de cierre de sesión y esa cookie debería desaparecer, y deberíamos ser enviados de vuelta a la página de inicio de sesión. Entonces veamos Aquí, mira hacia fuera. Entonces, ¿no lo encontraste? ver por qué un orgulloso Oh, me falta un cesto afuera. Ahí vas. Así que mira hacia fuera. Perfecto. Ahora, vamos a ver, ya no
hay cookie de nombre de usuario. Entonces inician otro que dice,
um, um, Robert Robert Logan aún bienvenido, Robert. Y usa su nombre. ¿ Está Robert aquí? OK, pero no quiero estar escribiendo como, ya
sabes, mirar manualmente aquí, así que prefiero ponerlo en una plantilla. Entonces la mejor manera para que el lugar de descanso ponga eso en es en la, um en la bienvenida real, um, plantilla, que es difícil como Index. Y lo vamos a poner en el ah, vamos a agregar algo aquí. Bienvenido. Usó su nombre y luego vamos a tener que está envuelto igual a tu URL cuatro. Mira hacia fuera y ponemos log out. No, y perfecto. Por lo que ahora tiene el euro para cerrar sesión y cerrar sesión vinculando allí. Y aún así lo está intentando ahora con Robert. Robert. Para que sepas, tengo mi función más larga a la que puedo acceder El nombre de usuario está ahí. Mira hacia fuera. No más cookies para ese usuario, así que se ve realmente bien.
41. Carga estática: Entonces una cosa que añadiría es un local pequeño para que, ya
sabes, se vea un poco más bonito. Y encontré este logotipo en el en Internet. Es actuar como un logotipo genérico, Um, y se puede acceder a él en Ah, en mi cuenta get hub que está vinculada en el en esta lección. Pero en todo caso, voy a guardar esa imagen. Y veo Estabas bajo esa parada mi logo. Y ahora quiero transferir eso al dedo del pie. El aplicativo aquí. Entonces vamos a crear para cualquier cosa que los archivos estáticos como esta imagen queremos crear Ah, lo que se llama directorio estático y que directorios automáticamente reconocidos por matraz como un, um igual que las plantillas, como un lugar donde vas a poner básicamente archivos que no son archivos python, sino imágenes. JavaScript, archivos, archivos
CSS, ese tipo de cosas. Entonces vamos a crear una carpeta, llamarla estática. Y ahora vamos a añadir el logotipo a esa carpeta estática de archivos. Y vamos a eso. Entonces tenemos que hacer es arrastrar el archivo y ponerlo en la carpeta estática, ver cómo se convierte esos archivos que puedo a gustar un poco de Barbaro. Estamos básicamente te permite subir ese archivo. Por lo que ahora tenemos ahí el AG Melo. Si haces clic en él, verás, Me gusta una vista previa aquí, que es bastante cool. Um, también
puedes recitar y rotar. Um, y, um, digamos que ese es el local. Por lo que ahora necesitamos agregarla a la plantilla base. ¿ Verdad? Porque fuimos a lo fuimos a aparecer por todas partes. Entonces sigamos adelante y entramos a la base. Y voy a sacar esto y poner cuando lo llame. Es un yo D. Quiero decir, un diff lo hice logo. Y aquí vamos a poner una fuente principal, uh, igual y aviso van a hacer un euro para pero voy a poner coma estática, y luego nombre de archivo igual. Esto es como una convención para ah, matraz, que nos permite cargar extático, um, activos a la página religiosamente. Y quiero decir fuera es igual a Acme Corp. Que es como, la pista, y voy a poner Ah, altura fuera. Uh, 150 pixeles. Eso es todo. Entonces a ver si tengo algún error. Se ve bien. Entonces ahora lo que estamos haciendo aquí es que estamos sirviendo un archivo estático, estático. Eso significa que no es un archivo python el que se mostrará en una página de propietario. Entonces volvamos a cargar la página. Perfecto. Es Ah, he frijol mirando esto de manera asumida. Entonces si lo pongo en la talla correcta, es como la talla real. Um, se ve un poco mejor, pero sólo para que ustedes puedan leer mejor cuando lo pongo ahí. Eso otra vez, Jorge, Jorge, inicia sesión Perfecto. Nuestras imágenes de archivo siguen apareciendo ahí, y así es como haces archivos estáticos en matraz.
42. Sesiones: Está bien. Entonces, como mencioné antes, por lo general no utilizamos cookies. Um, para aplicaciones. Debido a los problemas que describimos anteriormente, por ejemplo, pudimos ver, ya
sabes, los valores de las cookies aquí mismo en el on en el recurso está fuera de esa
página web , Dónde están las sesiones son más seguras porque están codificadas. Um, también
es más fácil usar las sesiones reliever o no. Entonces, Cookie. Entonces vamos a enumerar este año, hacemos eso en lugar de hacer respuesta, vamos a importar sesiones. No, son la biblioteca de sesiones, y luego solo vamos a eliminar estas tres cosas aquí, y vamos a prender sesión, usar su nombre igual a,
um, um, solicitar el formulario de solicitud, acostumbrarse su nombre, y luego vamos a devolver un,
um, um, redireccionamiento para el euro para, um, Bienvenido. Um, y luego
en el cierre de sesión, para que nos y luego
en el cierre de sesión,
para que noscomamos por
completo la galleta,solo
vamos a O en este caso,
la sesión. comamos por
completo la galleta, solo
vamos a O en este caso, Simplemente no hacemos sesión pop y más allá de su nombre de usuario. Um, y, uh, y luego nosotros Mark, mejor no aquí, y, um, finalmente hemos regresado. Redirigir. Ah, eres un para la tala. Entonces eso es más o menos un Así que puedes ver que se lee más fácil. Se ve mejor. Um, y vamos a intentarlo. Entonces echemos un vistazo aquí. Um, en realidad
tengo que, como, eliminar manualmente porque ese lookout funciona ahora buscando sesiones en lugar de cookies. Entonces intentemos de nuevo Jorge Jorge y reprimimos. Inicie sesión. Y, um, nos necesitamos Necesitamos revisar otra cosa, creo porque no estamos revisando la sesión. Estamos revisando la galleta. ¿ Verdad? Entonces no es ahora no es las tarifas su nombre es,
um, um, solicitar cookies, obtener nombre de usuario. Tenemos que hacer lo siguiente. Um, hombre, es con liberación. Simplemente decimos, si el nombre de usuario ah, cadena en objeto de sesión, entonces ,
um, podemos regresar. Plantilla de renderizar. Nombre de usuario es igual a sesión off. Ah, usa tu nombre. Eso es más o menos. Entonces, um, vamos a la página principal. Y ahora es Es ah, se ve bien. Bienvenido, Jorge. Mira hacia fuera. Y como puedes ver la sesión aquí, es, ya
sabes, se llama sesión, y es sólo un montón de personajes que realmente no conocemos. ¿ Sabes qué? Están donde están. Pero en esta cosa codificada, fuerza. Um, en realidad
es el valor de la cosa horti. Uh, Jorge, nombre
de usuario. Por lo que si
desconectas, verás que esta sesión ya no está ahí. Este intento llegaría lastimado, y Richard y luego otra vez y con éxito ingresó. Bienvenido, Richard. Todo se ve bien. Se establece la sesión. Y, um, si recargo la página, debería ver desaparecer ese mensaje flash. Por lo que se ve bien, um, y mucho más seguro. Como dije, está aquí para usar, um y, uh, vamos a echar un vistazo a una última cosa, que es algo que te prometo, que es cómo generar una buena clave secreta. De acuerdo, entonces aquí hay un truco para generar. Ah, seguro llave secreta. Y es realmente fácil. Hay una función que podemos aprovechar de,
um, um, de Python. Um, y se llama ¿Eres aleatorio? Entonces para que hagamos esa llave de generador, vamos a ir al control de terminal, a
ver para detener el servidor, y luego vamos a hacer python. Y aquí haces lo siguiente hacer importar os, y luego te topes os al azar y luego 24 que es como 24 bits en. Se obtiene esto, como, aspecto
muy extraño. Um ya sabes, lista de
personajes. Y si tú si lo vuelves a golpear, conseguirás uno diferente. Pero en cualquier caso, esto es ah, bueno, um, String para ponernos como tesis ECR es clave para tu python. Es decir, para su aplicación de pisos. Entonces solo copias eso, um, y luego basas aquí, y esa va a ser mi nueva clave secreta. Entonces si ahorramos ahí, um, y probamos C o, necesitamos,
como,
poner como, el servidor corriendo de nuevo, Así que creo que será ¿Por qué? Y lo vamos a hacer otra vez. Jorge, Jorge, Sin ganancia perfecta. Funciona bien. Y es, ah, llave secreta
super segura Que eso es muy difícil para alguien de gasolina. Entonces, ¿recuerdas ese truco? Um, y ,
uh, ahora tenemos una aplicación más segura.
43. Loggers: en esta lección paralela. Yo quiero hablarles de lagers, lo cual no es importante. Um, componente de cualquier desarrollador Web se lo llevó. Y, um, siempre
es útil poder saber qué pasa con tu aplicación en términos desactivados. Al igual que lo que está pasando, sobre todo cuando los usuarios están buscando o viendo errores, es que registramos errores y, um, cualquier tipo de como, ah, en situaciones esperadas para registro de archivos y luego como, um, aplicación de
Assad es vida. Básicamente miramos estos archivos de bloqueo ya sea en la terminal, um, nuestro uso Hay un montón de buenas herramientas de terceros para mirar ese aspecto rápido también. Pero aquí hay una pequeña introducción a,
um, um, a la tala y cómo lo haces. Um, haces registrando con tu aplicación de pisos. Entonces lo que vamos a hacer aquí, vamos a iniciar sesión cada vez que haya un, um en tema con, um con el nombre de usuario y la contraseña equivocados siendo ingresado por el usuario. Entonces, um, básicamente
vamos a hacer eso, vamos a importar el registro, que es el servicio de registro de Python. Y vamos a usar,
um, um, el manejador A llamado manejador giratorio de archivos. Girar 500 permite básicamente no llenar completamente el espacio de tu servidor por ah ,ya
sabes, ya
sabes, generando
automáticamente archivos de registro que tengan, como, sellos de
fecha. Y luego una vez que te metes en cierto número fuera de fechas, entonces automáticamente copia eso a ah ah, un nuevo archivo y lo archiva como el siguiente número secuencial. Y luego así sucesivamente. Y finalmente, el último, ya
sabes, el archivo más antiguo off le encanta lo borrará automáticamente del servidor. Pero, um, se
puede leer más sobre la rotación de manejadores divertidos en el en la Web. Pero por ahora, quiero mirarlos ya sabes, cómo lo hacemos este año. Entonces, um, lo que vamos a hacer es que vamos a tener un, um vamos a introducir un error,
um, um, más tiempo aquí. Entonces tenemos esta zona glorias y hasta contraseña Ahora vamos a usar, um, la lager ábside. Y lo hacemos usando un blogger. Esa advertencia. Entonces advirtiendo. Hay diferentes niveles fuera del interés para el para los troncos. Y luego puedes seleccionar para, um ya sabes qué nivel quieres guardar al archivo para que puedas hacerlo desde,ya
sabes, ya
sabes, de advertencia a aire a errores reales o de etcétera informativa. Para que puedas tener diferentes tipos de entradas y consultas, y luego la contraseña no es como un aire súper severo, así que lo vamos a llamar una advertencia. Entonces aquí, vamos a guardar dedo del pie al archivo. Incorrecto. Ah, use su nombre y contraseña para usted, señor. Y luego vamos a imprimir el nombre de usuario. Entonces tenemos eso en el expediente, y vamos a,
um, um, más allá de solicitar ese formulario. No te acostumbres su nombre nosotros el porque ese por ciento s, um string. De acuerdo, eso es más o menos. Ah, así que aquí no tenemos aire. Ah, es incorrecto. Ah, yo, um sí, estoy haciendo una cancha doble del principio y una cualidad. Y ahí tienes, um y necesitamos configurar el logging like, configurada en el nombre principal aquí sección. Entonces lo vamos a poner después de la llave secreta. Y comentemos que el registro de Estados Unidos para que tengamos una sección ahí, por lo que el manejador es igual a giratorio manejador de archivos. Vamos a llamar al archivo error lug, y vamos a poner la cantidad máxima de bytes por archivo va a ser de 10,000. Y sólo vamos a,
um, um, retroceder del dedo del pie un archivo. Y luego después de eso, es algo así como borrado. Por lo que mantendremos dos archivos a lo sumo uno. Ese es el fuego abierto en la espalda. Um, puedes leer más sobre los parámetros que puedes poner aquí. Um, Y como dije, vamos a hacer este nivel que vamos a poner que es, como, el más básico. Entonces íbamos a haber perdido básicamente todo. Y finalmente para hacer esto habilitó sumar punto más largo en handler y luego handler, que es lo que definimos esta área viable. Entonces eso es todo. Um, va a ahorrar en la carpeta raíz, um, en el supongo, en el matraz En él nivel, vamos a ver un archivo de registro de errores. Pop up y recuerda, Muy. Si estás usando, te
atraparán. En caso de que me ignoren ese expediente porque no deberías tener eso en tu informe. Entonces escape country para ver si hay algún error, no
hay ninguno. Entonces lo que vamos a hacer aquí, vamos a mirar hacia fuera que vamos a crear un error, así que vamos a hacer Jorge Ah, 12345 ¿Cuál es la contraseña incorrecta? Registro. Está bien. Incorrecto. Usa la contraseña de Ram hasta que parezca que no pasó nada. Pero si veo aquí ahora, veo un archivo de registro de errores. Bastante interesante, ¿eh? Y si parezco como digo, anima a un embajador para usted, señor Jorge. Entonces como puedes ver, cosas
muy útiles como tú puedes poner como iniciar sesión en diferentes partes fuera de tu aplicación para que tu tipo de como un desgaste cuando las cosas se están rompiendo. Um, y esto es adicional al teléfono al pastel, como errores de seguimiento de pila, que son los como los 500 errores. ¿ Qué brazo o siete años compró? Um, entre esos dos, creo que se puede. Puedes tener una idea bastante buena de lo que está pasando con tu aplicación.
44. Tabla de usuarios: perfecto. Por lo que tenemos nuestra tabla de usuarios creada dentro de la base de datos. Mi app de matraz. Entonces ahora vamos a usar, um, o insertar la primera fila para eso, um, para esa mesa. Y así lo voy a usar con, um, con mi propio nombre de usuario, y lo puedes hacer con el tuyo para que puedas insertar en yusor, que es la tabla en la que queremos insertar. Y luego pones valores y vamos a poner cada uno de esos valores para los campos, como usuario I d nombre de usuario y contraseña. Porque el usuario estos son mi limpia incriminatoria. Acabas de poner
cotización, cotización porque no queremos pasar el número real, podríamos pasar el número, pero entonces llevaría a que me guste, tendríamos que estar revisando. ¿ Cuál es el siguiente número? Todo eso, Todas esas cosas. Entonces acabo de poner una cita ahí, y vamos a tener ah,
vamos a poner a Jorge, que es el nombre de usuario, ¿
verdad? Y por último, no
voy a tener que usar a Jorge Jorge como similares usar pasaporte de mujeres. Entonces voy a crear una muy tonta y nunca usé esta contraseña en tus propias aplicaciones. 12345 eso Ese es el usuario i d el nombre de usuario y contraseña. Así que termina el paréntesis y di, Michael, presiona enter y dice consulta. De acuerdo, una fila afectada. Eso es Ah, eso es bueno. Entonces, ¿cómo vemos si ese registro fue almacenado? Simplemente hacemos unas declaraciones selectas. Elect es básicamente, como un like una consulta o un filtro. Um, y le puedes pasar al amigo como condiciones. Pero por ahora, sólo
vamos a, um, mostrar todos los registros, que en este caso, es sólo uno. Entonces seleccione estrella de Ah, ¿usted, señor? No. Y semi colon y entrar. Ve cómo se ve como un archivo excel. Por lo que tenemos al usuario. D ver cómo automáticamente pone advertencia ahí. Ah usó su nombre, el nombre de usuario y la contraseña. Entonces eso es perfecto. Tenemos el ah, el camino de ahí. Entonces ahora vamos a estar cableando esto con nuestra aplicación de matraz. Entonces vamos a x salir de mi secuela. Se puede hacer ah, controlar el yo creo o se puede poner salida y luego paréntesis. Aprendices. Um, punto y coma. Entonces, uh, creo que no necesitas poner el prentice. Ahí vas. Um, y déjame ver si puedo hacer eso con control. ¿ De Dia? Bueno, sí. Las palabras ive controladas eran a la vez pitón y mi secuela le preguntó el final. Está bien, Perfecto. Entonces ahora recuerda cómo teníamos, um requisitos Txt. Y voy a sólo ganado que recuerdas. Por lo que tenemos hasta ahora matraz. Y por mi secuela, lo que dos líneas. Um así para que instalemos el por mi secuela, básicamente
podemos instalar todo el archivo haciendo el siguiente comando. Pip, instala nuestro holandés nuestros requisitos. Lo que va a hacer es que le va a gustar, um, espiar, robó o empaquetar por algún empaque robó todas las diferentes bibliotecas que tiene listadas su en este caso matraz y por mi secuela. Pero como destellos ya instalados, no
va a hacer nada. Se asume, como saltarlo. Um, así que efectivamente se va a instalar por mi secuela. Así podría todavía eso y ver qué pasa. Perfecto. Por lo que dice, sabes, requisitos ya satisfechos para matraz. Y es exitosamente, ya
sabes, descargado e instalado por mi secuela. Entonces ahora, por mi secuela es básicamente la biblioteca que nos dejará hablar del pie del servidor mi secuela de
nuestra aplicación de matraz. De acuerdo, entonces vamos a, um, poner esto, uh, yo mínimo o minimizar, um, la ventana. Y, um, está
claro esto aquí. Um, Así que otra vez, si quieres ver los requisitos, el extremo que parece que tenemos matraz por mi secuela ahí. Entonces vamos a cerrar esto. Um, sólo
vamos a hacer la aplicación hola p y ahora. Entonces el control de escape. Entonces vemos toda la terminal eso Ahora vamos a tener en hola, p ¿por qué? Vamos a tener que importar por mi secuela. Y eso lo hacemos haciendo por mi secuela aquí en la parte superior off. Hola, p. y
Y ahora el padre que necesitamos que nos guste Mira es el valor, Logan, porque ahí es donde estamos haciendo el chequeo, ¿
verdad? Por lo que no tiene sentido comprobar si tu apellido es igual a contraseña. Porque eso no es lo que estamos haciendo. En realidad vamos a ir a la base de datos y ver si usaron su nombre y la contraseña están coincidentes. Entonces, um entonces vamos a darle vuelta eso a la a la aplicación con un verdadero y si no coincide, entonces vamos a devolver un falso. Entonces, ¿qué hacemos aquí? Vamos a sacar esta luz y vamos a llamar a esto si los datos luego vuelven verdaderos. Els Retorno cae. Pero, ¿qué es eso? ¿ Datos? Vamos a empezar a hacer eso aquí. Entonces solo voy a poner aquí un commit un comentario, es
decir que Mi secuela, Block. Entonces vamos a tener que definir un,
um, um, número fuera de Constance. El es mi secuela, la de su anfitrión. Y esto lo vas a tener que hacer exactamente como estoy escribiendo aquí. Um, si lo estás haciendo con tu propio servidor fueran tuyos, um, como, instalación
local fuera de mi secuela. Estos números podrían cambiar. Y necesitas seguir cualquier tutorial o, ya
sabes, ayudar a la falta que estás usando. No voy a poder apoyar eso, pero, um, no
es tan complicado. Um, y, uh, deberías conseguir esto. Obtén algunas ideas de esto de estos videos. Entonces las mangueras que la luz local sea el usuario de la base de datos es, um, en mis casos desde Siria hasta usted. Entonces recuerda cómo, cuando teníamos la terminal aquí que decía,
um, um, había un nombre de usuario creado este productor aquí que es el uso o vas a usar en esto es mi usuario secreto de base de datos aquí. De acuerdo, así que asegúrate Cuando crees una base de datos para tomar nota de eso, entonces vamos a usar Ah, mi secuela que tiene una contraseña. Y lo hemos sabido porque por el club completo nueve no crea contraseña, y puedes crear tu propio pasaporte. Pero en realidad no se requiere porque es solo con fines de desarrollo. Entonces nadie más va a estar usando eso. Tienen un lugar en el que definitivamente no pudiste establecer pasaporte, y puedes mirar hacia arriba en el giro y cómo hacerlo. Por último, necesitamos pasar la base de datos la B, que es, uh, como recuerdas mi frasco arriba. Eso es lo que llamamos la base de datos. Cuando hicimos para crear eso, me mezclo aquí, ¿no? Uh, y ya casi terminamos aquí. Entonces ahora sabemos que necesitamos configurar una conexión a la base de datos usando esas, um, esas constantes. Entonces lo vamos a hacer por mi sola conexión, y así vamos a decir que host es igual a mis bases de datos de secuela Host,
um, usted, señor, uh, uh, es igual a mi usuario de base de datos de secuela. Um, la contraseña es mi secuela. Contraseña base de datos. Sé que estoy usando WD pasado. Así es la cuerda. O sea, el departamento o se llama y luego finalmente DV es igual a mi secuela, la de un Stevie. De acuerdo, entonces ahora tenemos que crear un cursor, que es básicamente como un puntero que nos permita buscar cosas y hacer operaciones con base de datos. Está bien. Y vamos a hacer y ejecutar. Vamos a ejecutar un comando apagado, um, de mi secuela haciendo esto, ejecutar, um, método. Y entonces qué vamos a ejecutar aquí? Tenemos que seleccionar básicamente, que recuerden te dije que era como una estrella selecta de Fichter, que es seleccionar campos más antiguos para ese rol de usted, señor, donde usar su nombre es igual. Y no había autobús. Una cadena aquí y contraseña es igual a otra cadena. Ahora vamos a mejor bien, y, um, así que por ciento aquí para que podamos hacer los reemplazos y vamos a decir, uh, usar su nombre y rápido, que son los que están siendo se están pasando aquí en la parte superior de la función que se puede ver usando una contraseña. Son los mismos aquí. Entonces ahí lo tienes. Entonces este comando está diciendo seleccionar una fila que,
uh, uh, del usuario de la tabla, donde el nombre de usuario es igual a lo que Jorge y el pasaporte es lo que el año pasado, ya
sabes, 12345 es un correcto uno. Pero vamos a jugar tanto con el correcto como con el de indagación. Y por último, necesitamos recuperar los resultados del servidor a nuestra aplicación. Y la forma en que hacemos eso es diciendo maldición o recogido uno y seguro. Es si siempre lo hemos hecho. No estamos corriendo a eso de caminos. Me refiero a la aplicación todavía, así que eso es más o menos. Esto se ve muy gracioso el principio. Y para ser honesto, no
lo es. No es la forma en que vas a hacer la aplicación más avanzada en la que vamos a empezar a trabajar en la siguiente sección. Pero esto te da como una idea fuera de lo que pasa, lo que pasa en segundo plano. Y siempre hay algo así como algunos ajustes, ya sea un florero ahí, algún cursor que necesitas iniciar, y luego algún comando para buscar la información que necesitas. Entonces probemos esto y veamos cómo funciona. Entonces vamos a nuestro servidor, um so python Hola P y Bueno, abogados. Eso es bueno. Tan perfecto. Entonces vamos a la página de inicio de sesión. O más bien la página principal Se re nos envía o redirige es iniciar sesión. Entonces ahora vamos a usar a Jorge Jorge, que es el incorrecto. Porque recuerden, insertamos ese disco con Jorge. 12345 y presione Logan. Wow. Consultas en y pasaporte. Eso es impresionante. Eso significa que, um y es gracioso, Al igual que también imprime la tala aquí. Como pueden ver,
um, um, eso significa que se conectó a la a la base de datos y fue a buscar, uh, o una búsqueda. Perdón. La búsqueda en, um, de usted, señor. Tabla donde nombre de usuario es Jorge y pase preocupa Jorge. Y esos datos quedaron en blanco. No hubo ningún hit así que, um básicamente esa beta fue devuelta falsa. Y entonces eso fue a esta cuadra. ¿ Dónde? Consultas en el pasado. ¿ Dónde se establece? Entonces vamos a escribir con el correcto. Jorge. 12345 Y así acepten. De verdad me encantó. Impresionante. Esto es tan grande. Um, entonces esto significa que hemos configurado correctamente el de Ace Server que está comunicando toe a nuestra aplicación y finalmente nos acercamos a cómo se ve una aplicación real, que es tener un Ah, nombre de
usuario y tabla de contraseñas o una tabla de usuarios de la que podamos golpear y obtener respuestas y poder ver si el si es el nombre de usuario y contraseña correctos. Entonces una vez más, trabajo
increíble y la siguiente sección básicamente va a llevar esto al siguiente nivel. Va a ser increíble. Pero por ahora, ya sabes, siéntate, relájate y alegría y, ya
sabes, fiesta un poco que has llegado hasta ahora. Ah, en el curso, y te vamos a ver en la siguiente sección para iniciar nuestra aplicación de blogueo de vida rial.
45. Mysql: Entonces quiero felicitarte porque has recorrido un largo camino. Ya hemos visto muchas cosas de matraz. Entonces, ya
sabes, debes sentirte orgulloso. Um, que has llegado a este punto, tenemos una bastante decente, um, aplicación de
registro y, ya
sabes, cerrar sesión. Estos son muy fundamentales. Um, el
blog es para construir cualquier aplicación, así que , ya
sabes, deberías estar Ah, definitivamente, um, orgullosos de vosotros mismos. Um, y estamos listos para dar el último paso final en esta sección. Y eso es introducir finalmente,
um, um, básicamente base de datos. Pensé que era componente de nuestra aplicación de registro son de registro. Entonces, um, una cosa que vamos a requerir desde el principio es que vamos a tener que instalar un paquete. Um, y ese paquete lo llama mi secuela. Entonces, um, para que hagamos eso,
um, um, vamos a tener que,ya
sabes, ya
sabes, espiar robó una nueva ah, nueva biblioteca. Y, um, me gusta mantener las mayores básicamente todas las bibliotecas que tu aplicación requiere en un folículo requisitos. Txt. Entonces vamos a crear ese archivo y en nuevo archivo. Entonces lo vamos a llamar requisitos txt. Y, um, se mueve. Dijeron que estará aquí y lo que hemos instalado hasta ahora, es flash. Entonces deberíamos poner matraz ahí dentro, y, um y vamos a tener esta nueva biblioteca llamada, um, por mi secuela. Entonces por mi c. Así que vamos a guardar eso. Y, um, ahora vamos a hacer algunos comandos en el en la terminal, así que vamos ah, vamos a maximizar eso. Y veamos qué tenemos que hacer aquí. De acuerdo, salgamos, um, del, um del servidor. Y así la forma en que Cloud nueve usa mi secuela, ya está incorporada. Entonces eso es bastante bueno si estamos Si estamos haciendo esto en tu propia laptop personal o PC, um, tienes que instalar mi secreto. En este punto. No voy a cubrir eso, Um, y no puedo apoyarlo. Por lo que te recomiendo que tipo de mirar algunos tutoriales fuera en la Web sobre cómo instalar mi secuela. Pero en todo caso, ah, aquí en En la nube nueve. Parte de la razón por la que elegí este ambiente es que ya tiene mi edificio secuela , Así que eso es algo bueno. Entonces no te preocupes por instalar mi secreto. Ya está aquí, pero necesitamos iniciar primero el servidor, y la forma en que lo haces es hacer mi secuela, CTL, que es el control Start, y verás que dice que está insultando mi secuela. Está empezando de nuevo, buscando tablas y ahora tenemos,
ah, ah usuario
raíz de Siria, la U y A base de datos que se ha creado para nosotros. Entonces está empezando a mi servidor de secuelas, y se hace perfecto. Eso se ve, todo se ve, se ve bien. Entonces ahora que tenemos mi secreto corriendo, ¿cómo interactúas con él? Bueno, hay dos formas una es a través de la aplicación y a través de la biblioteca que estábamos instalando por mi secuela. Pero, ya
sabes, quieres hacer alguna puesta inicial, y la forma de hacerlo es mi secuela tiene su propia terminal. Entonces
piénsalo, digo, algo así como estamos entrando a una terminal dentro de la terminal, y esa terminal se llama la interfaz de línea de comandos de mi secuela. Y entonces lo que vamos a hacer ahora es que vamos a crear nuestra primera base de datos ah y nuestra primera tabla. Entonces piensa en una base de datos como una colección. Fuera tablas y tablas son básicamente filas y columnas y más o menos como un archivo
excel si no sobresales, Um, donde tienes, como, en las columnas, tienes el campos, como nombre de usuario contraseña, ya
sabes, fecha fuera de registro, ese tipo de cosas. Y entonces los roles son como el tipo real de, como los datos. Entonces vamos a crear una tabla de contraseñas ah, canela, um, llamada usuario. Y básicamente vamos a salvar a nuestros usuarios en eso en la mesa. Entonces, ¿cómo entramos a la línea de comandos de mi secuela? ¿ Me dejarás despejar la pantalla? Entonces tenemos una clara hacemos mi control de secuelas, igual que lo hicimos antes. Y tú tipo c l yo y salimos. Ya sabes, mi secuela. Bienvenido. Esto es impresionante. Um, entonces ahora básicamente vamos a crear nuestra primera base de datos. Entonces resulta que mi secuela viene ya con algunas bases de datos. El modo en que puedes ver que es que sí muestras base de datos. Y una cosa que notarás que probablemente te vas a olvidar porque no usamos semi puntos en python. ¿ Eso es cada extremo del comando que le estás escribiendo a mi secuela? Nos pusiste en mi columna. Si no pones ese semi colon, te va a gustar en una prensa entrando y mis cosas secretas que todavía te gusta escribir como un comando multilínea. Así que asegúrate de poner el punto y coma al final. Entonces si sí muestro eso una base, veo todas las bases de datos. Y como pueden ver, aquí
hay un C 91. Ese es el que la nube nueve creó para nosotros. No lo vamos a usar, pero es como hacer las cosas más fáciles. Otro esquema de información, esquema rendimiento y mi secreto, que son bases de datos internas de bicicletas. Entonces no tienes que preocuparte por esos avisos que usé gorras para Mostrar que una base porque es una buena práctica diferenciar entre mis comandos hoz y variables
mediante el uso de, um, uh, ya sabes, gorras para los comandos mi Siegel y, um, y gorras bajas para las Biblias o nombres de tablas o ese tipo de cosas. Perfecto. Entonces vamos a crear sobre la base de datos que vamos a usar. Entonces para eso, usamos el comando crear base de datos, y lo vamos a llamar mi en el matraz de puntuación en la aplicación de puntuación. Y recuerda que dicen mi frío. ¿ Verdad? Perfecto. Entonces, ¿cómo veo que fue creado? Um bueno, puedo hacer arriba Arrow para volver a los comandos anteriores, ir a las bases de datos show, y si presionaba Enter, veré que mi op de matraz está ahora ahí, así que eso funcionó muy bien, bien, entonces recuerda que te dije que las bases de datos son colecciones de tabla, así que en realidad no podemos almacenar nada en esta base de datos. Necesitamos crear una tabla dentro de la base de datos. Pero antes de que hagamos algo con esa base de datos, es útil sólo, um, entrar parecía entrar en esa base de datos preguntada la a medida que eleva vamos a usar para agregarle cosas. Entonces para eso, solíamos venir y usar mi frasco arriba, um, semi colon. Y ahora ves que es un estado de intercambio. OK, ahora significa que mis pisos copian la dinámica en la que estoy y donde estoy creando o, ya
sabes, algo así como afectando con comentarios que estoy siguiendo. Entonces vamos a crear la tabla. Solo vamos a usar una contraseña de nombre de usuario, y vamos a tener un usuario. Yo d que es Ah a menudo verás esto en mis bases de datos de secuela. Tienes un yo d eso. Es un número que se incrementa como 1234 Básicamente es como el número de fila. Y mi secreto se encarga del incremento de ese número automáticamente para nosotros. Um, así que vamos a simplemente nos va a gustar el mercado como lo pidió el i D. Pero así vamos a ver cómo se hace eso. Toe crear tabla. Usted, señor. A ver cómo le va, usuario con, uh, no en gorras en gorras bajas porque es ah, es Ah, es un medio de tabla, Entonces presiona paréntesis y luego entra. Ahora, fíjate que no estoy haciendo punto y coma aquí porque estoy haciendo un comando multilínea y veo esa flechaita ahí. Eso significa que mi secreto está esperando más muestras de nosotros. Entonces el primer campo va a ser usuario. Yo d, um, a menudo la gente y yo uso si es una idea. Simplemente usa tu autoridad, como sin el guión bajo. Um, pero lo voy a poner con subrayado aquí para que,
como, ya sabes, enseguida
te des cuenta de que ese es el uso. A derechazo. Um, así que después del nombre de campo, necesitamos dedo del pie. Díselo. Cuéntale mi secreto. Qué tipo fuera de campo. Entonces vamos a llamar a esto entero porque es un número entero 1234 Y puede subir,
um, um, a un número muy alto. Entonces no creo que tengamos que decírselo a mi en secreto. Entonces es un no saber, lo que significa que nunca podremos tener este campo. Um, en blanco. Tiene que tener un valor en ella. Y por fin vamos a decir incremento automático, lo que significa que cada vez que inserte un registro, por favor aumente este número al siguiente. Entonces no así mi columna. Pero el coma entra. Y ahora vamos a poner nombre de usuario, que es el que el nombre de usuario fuera del usuario. Y este es un campo tipo var char off 64 caracteres. Por lo que el nombre de usuario no puede tener más de 64 caracteres, y tampoco se sabe. Ah, también
vamos a tener una contraseña, que también es de nuestro char off 64. No se sabe, y finalmente, siempre
es útil tener un índice para el para la tabla para que sea,ya
sabes, ya
sabes, el escaneo se haga más rápido,
y es bastante a menudo que usó el índice primario sea el usa una derecha así que vamos a decirle eso a mi clave primaria C. Usa una prensa de escritura. Entra Sam. No, no. Punto y coma aquí y ahora vamos a cerrar. Esa primera parte es, está fuera del usuario, y luego lo hacemos decimos, Michael Perfect. De acuerdo, entonces finalmente, ¿cómo comprobamos que la mesa fue creada correctamente? Tenemos un comando show tables, así que show tables mostrará las tablas sobre Did que base que estaban personalmente en la que, en este caso, es mi carne arriba en su ego. Ahora vemos la mesa. Ahí se creó Yusor. Por lo que el siguiente paso va a ser crear registro en esa tabla que vamos a utilizar pidió la contraseña de nombre de usuario para la aplicación de matraz.
46. Requisitos: Hola a todos. Um, esta es una actualización rápida que necesito hacer para todos, aunque estés,
uh, uh, empezando a cursar, o estás un poco por delante del curso en esta lección introductoria. Pero ha habido algunos problemas o problemas que los usuarios han tenido porque no había estado usando version ing en los requisitos. Txt. Así que por favor asegúrate de usar estas versiones cada vez que me veas haciendo peeping robó requisitos y agregando una nueva biblioteca nueva, verás que solo tecleo la primera pieza como matraz y por mi secuela. Pero en cambio, um, cada vez que se le diga que haga eso, simplemente reemplace eso por esto. Todo el asunto con aversión y tendrás mucho, mucho menos temas. El archivo de requisitos. Puedes copiar y pegar también desde el repositorio, y pondré este enlace en el en la lección. Tan feliz codificación. Y, uh, ya
sabes, siempre
estoy disponible para ayudarte con cualquier pregunta.
47. Empecemos con nuestro blog: De acuerdo, entonces aquí, vamos a empezar nuestra sección básicamente nueva con vamos a construir un blawg de matraz usando una aplicación impulsada por
base de datos sobre va a haber, o vamos a cubrir muchos conceptos que son muy importantes para que sepas. Son cosas muy fundamentales que ibas a estar usando durante mucho tiempo en tu carrera de
desarrollo web . Entonces es importante que realmente tomes notas y codificas a lo largo de nosotros como hago esto estos ejercicios , porque estas son cosas como dije que son el pan y la mantequilla, si quieres, para tus carreras de desarrollo web, Por lo que la primavera emocionante. Vamos a, um, construir ah, obligación
bastante compleja aquí. Y, ya
sabes, como todo lo que estoy haciendo con estos cursos, se va a hacer. Ah, la forma profesional. De la forma en que, um que harías si estuvieras trabajando en una de las más calientes, ya
sabes, starups aquí en Nueva York o en otros lugares. Entonces, ya
sabes, siéntate bien. Y empecemos, um, esta sección con nuestra aplicación blawg de matraz. Entonces lo primero que quiero um, cubrir aquí es,
um, um, vamos a estar usando algo llamado base de datos o M o M significa
mapeador relacional de objetos . Y vamos a estar usando alquimia secuela. Um, y lo que o M te permite hacer es básicamente, um te permite comunicarte,
hablar, hablar, básicamente dedo del pie en una base de datos, um, usando un objeto orientado ah, representación de los datos. Entonces, por ejemplo, si tienes un digamos, una tabla de usuario justo en mi secuela como la que teníamos en nuestra sección anterior, interactuarías con eso usaba su tabla creando instancias fuera de un usuario de, ah, clase, es
decir, eso es ajeno de esa tabla de usuarios. Y entonces tendría cosas como usted,
señor, señor, ese nombre de usuario ese correo electrónico. Por lo que esas serían propiedades de ese objeto. Y también tienes métodos a los que puedes acceder. Por ejemplo, usted, señor, que, ya sabe, filtra y luego se puede hacer ah, ya
sabe, nombre es igual a Jorge. Entonces conseguirías sólo los registros que, um, esa tabla de usuarios, que tienen un nombre fuera de la cabeza. Um, así que como que le gusta. Hace que la interacción con eso obedece realmente simple. Pero también te permite no lidiar con el nivel inferior tipo de como el desgaste de la
base de datos. Es ah ah ah. Se le proporciona de forma automática. Entonces esto es algo que suena un poco complicado? No te preocupes. Obtendrás lo conseguirás una vez que empecemos a hacer los ejercicios. Pero, um, pero definitivamente verás el beneficio de trabajar con una o M frente a
adquirir directamente como hicimos en la última sección. Ah, un cursor. Y se balancea afirmaciones selectas y cosas así. Entonces quería hablar de eso y algo así como presentarlo a secuela alquimia, que es la yo diría que uno de los más populares o objetivos que eso, um, que están ahí afuera para, para pitón. Entonces vamos a echar un vistazo a eso. Um ah, en esto en esta lección. De acuerdo,
entonces, ¿por qué no iniciamos nuestros proyectos? Entonces vamos a ir aquí a la nube nueve, y cuando crees un nuevo espacio de trabajo y vamos a llamar a esto, um, el matraz Blawg. Entonces pongamos aquí el blogging de matraz, y no hay necesidad de hacer una descripción. Asegúrate de usar personalizado aquí,
um, um, para la plantilla, y luego crea el espacio de trabajo, ya
sabes, crea el contenedor, y estamos listos para empezar. Perfecto. Um, voy a poner algo Ah, algunos ajustes aquí. Ah, ya veo. Yo quiero poner la fuente un poco más grande para que ustedes puedan ver mejor configuración de usuario y 24 . Eso se ve bien. Está bien. Perfecto. Sí. Entonces esto se ve bien. Um, así que ahora voy a Lo primero que tenemos que hacer es crear, um, el directorio real en donde va a estar el blawg. Entonces recuerda cómo te dije que no usaras, um, guiones para el nombre off, el off the del proyecto. Entonces vamos a crear una carpeta. Y para eso, vamos a hacer, um, hacer ahí. Lo vamos a llamar matraz en el marcador. Blogueados. Por lo que cambiamos directorios. Um, y ,
um, Y de nuevo ,
recuerda, lo primero que siempre hacemos cuando iniciamos uno de estos proyectos o cuando empezamos trabajar en ellos, a
trabajar en ellos,
es crear el entorno virtual. Entonces voy a hacer ve envidia, que es entorno virtual. Necesitamos un pitón tres ejecutar herbal. Entonces tú haces que sea. Y vamos a llamar a esto, um v y B. Oh, lo siento. Entorno virtual aquí vía troll em. Ah, p árbol de pitón ven. Entonces eso es lo que pensamos tu directorio de bloques flash Perfecto. Por lo que está instalando el execute herbal for matraz, y ya terminamos. Y ahora tenemos que activar. Entonces fuente vamp siendo activada Y recuerda, antes de empezar a citar, necesitas ver esa cosa ve MB ah al principio. De lo contrario, vas a estar instalando paquetes y haciendo las cosas mal en el lugar equivocado. Entonces voy a seguir adelante y empezar, um, con el, um con el blawg y básicamente Ah, lo primero que quiero hacerlo es crear este archivo txt requisitos donde vamos a estar rastreando el, um, los paquetes o las bibliotecas que estos este proyecto necesita. Entonces hagámoslo. Um, quería dejar que esto me leyera y el porque creo que eso es del de la
instalación por defecto . Y recuerda que el paquete o la aplicación es ésta, no este enchufe flash en la parte superior. Esta linterna en la parte superior es igual que el nombre fuera del espacio de trabajo. Entonces voy a llorar, clic ahí, y voy a hacer nuevo archivo, y voy a llamar a estos requisitos, no a txt. Y luego nos desplazamos aquí un poco. Ah, para que veamos más nombres sucios. De acuerdo, así que hago doble clic ahí y tengo requisitos. Entonces por supuesto, el primer paquete. Necesitamos su matraz. Entonces porque estamos haciendo este matraz casero y vamos a nueva necesidad por mi secuela, que es el conector, el conector de secuela que estábamos usando en la última lección. Y este es el, uh, o, um del que te estaba hablando. Y vamos a usar uno llamado Flask Dash Sequel Alquimia. Ahí hay una secuela, Alquimia Alone, como solo secuela Alquimia Library. Pero el matraz que guión secuela alquimia está estrechamente integrado con plano. Entonces vamos a usar eso. Y por último pero no menos importante, vamos a usar algo llamado Flat Script y te explicaré un poco más tarde qué hace
eso por nosotros, pero principalmente no vamos a estar usando más eso por teléfono. Hola, alambre
P. Python. Feliz. ¿ Por qué? Porque esa no es una forma ah, ya
sabes, muy escalable de hacerlo. En cambio, vamos a usar, um, algo llamado Python administrado B y, que nos permite hacer ya sabes, iniciar la aplicación, hacer eso. Yo base las operaciones son otra cosa, por lo que es más flexible, pero lo veremos cuando empecemos a trabajar con ella. ¿ De acuerdo? El siguiente paso que vamos a hacer es crear un in it p y en la misma raíz fuera de la aplicación. Tan nuevo archivo en esta partitura en la partitura en ella en este tipo de cancha punto b
y. Y esto en una p y es donde vamos a poner algunas de las cosas que ponemos en el en la
aplicación principal en la última sección. Y así vamos a ver qué parece eso vamos a hacer desde el matraz de importación de matraz, ¿
verdad? Y luego vamos a hacer lo mismo es una instancia de aplicación de matraz con el nombre pasado, y vamos a, um, Así que una cosa que vamos a empezar a hacer es configurar, um, la configuración de la aplicación desde otro archivo desde un archivo de configuración. Y esto tiene que ver con, como, veces vas a tener diferentes configuraciones de um para cuando eres como si tu aplicación se ejecutando en producción versus cuando se está ejecutando localmente aquí o en tu laptop. Entonces es bueno es algo bueno separar la configuración en un archivo que se puede rastrear y modificar, um, inversión para los diferentes entornos. Um, así que eso es casi todo. Una cosa menos. Entonces vamos a empezar, como, poner la estructura un poco en esto. Entonces vamos a crear en realidad una nueva carpeta aquí, y esa carpeta se va a llamar casa. Y eso va a ser como donde vive nuestra página principal para el, um para el bloque. Y vas a empezar a ver que vamos a empezar, como, componer modular las diferentes partes de la aplicación, y eso tiene mucho sentido. Es ah, la mejor manera de,
um, um, estructurar tu aplicación en diferentes cubos para que,ya
sabes, ya
sabes, el mantenimiento y el desarrollo de la obligación sea más fácil. Um, si tuvieras todo en una carpeta, como todos los archivos P Y, sería como una pesadilla mantener esa aplicación. Entonces vamos a empezar a separar los diferentes componentes o los diferentes. Ah, es un vertical dentro de tu aplicación en diferentes carpetas, y esas carpetas van a tener plantillas. Vamos a tener vistas. Um, y de esa forma vas a poder, um, mantener mejor tu aplicación. Entonces vamos a crear una vista aquí, así que voy a hacer un nuevo archivo, y se va a llamar vistas B
y Y , um, lo que vamos a poner ahí, um, es lo siguiente vamos a tener, um Entonces esto es algo que vas a tener en cada vista que tenemos en esta aplicación? Sí. Y es disgustos del blogger de matraz. Y noté que este matraz en el bloque de marcador tiene que ser el mismo nombre fuera del doblado
que creaste ahí. Entonces por eso no necesitamos Escaparras que tenemos que usar en sus partituras. Una app en este caso es esta app. Entonces lo que este forro diciendo es de que cualquier archivo pre y de flash block importante hasta la app, que es la aplicación de matraz, Y a partir de ese momento, podemos, um podemos señalar a esa app como la las rutas de ventana de aplicación de pisos. Entonces, en este caso, cuando lo hacen por el índice de casa Ah, para el para el para el índice o barra. Pero la mayoría iban a agregar indexación aquí, si
acaso. Sirve esta función de índice y vamos a regresar hola, mundo. Para que sepamos que, um, podemos comprobar si está funcionando o no. Entonces eso es todo. Se guardó el archivo. Y no hemos salvado esta estupidez ahí porque veo a los pequeños salpicando su. Entonces ahora se guarda. De acuerdo, así que ahora vamos a estar, um tenemos que importar esa vista porque eso es lo que va a ser, um, especie de, como correr desde la aplicación. Entonces voy a tener que hacer desde casa vistas de importación. Vale, Entonces lo que eso está haciendo es que se va a casa, y se va a importar el archivo views para todos los Esto es como el controlador, todas las funciones para las rutas para ese módulo van a ser importantes aquí. Ahora, cuando tenemos aquí una carpeta de usuario u otros tipos fuera de contenido o módulos, entonces necesitamos agregarlos en esta unidad B Y.
48. La estructura básica: De acuerdo, entonces ahora vamos a empezar a mirar el archivo Settings, y ah, es cuando tenemos realmente simple, um, nada no había visto antes. Pero yo Como dije, lo
vamos a poner en este archivo separado y que los archivos de configuración van a tener una clave secreta. Um, que ya te enseñó cómo el dedo del pie genera uno nuevo. Pero por ahora, solo para que sea rápido, simplemente lo
haré nunca adivinarás. Y vamos a tener una depuración igual. Cierto. Para que, um tenemos recarga automática, Um, y ese tipo de cosas. Entonces Ok, entonces ¿qué sigue? Um, necesitamos, um necesitamos ahora crear este archivo llamado Mannix B y
Y esto manejar lo sabio ¿Qué? En realidad vas a estar corriendo para, um, para iniciar y detener la aplicación. Entonces vamos a crear esa carpeta. Me gestionó. ¿ Por qué? Y lo primero que queríamos escuchar es que queríamos que pudiera minimizar la terminal. Um, queremos básicamente tener un dedo del pie puntero esta carpeta, y esto es algo que puedes buscar en línea. En realidad no lo es. decir, Esdecir,es una línea un poco complicada, pero lo que hace es básicamente alaus python saber cuál es el punto de partida de todo
esto y poder luego encontrar otras carpetas,
um, um, dentro de la, um dentro de la esta esta aplicación dis. Entonces básicamente, lo que esto está diciendo es, consígueme el ah, los archivos ubicación actual y luego importa o upend toe la ruta de python, el nivel por encima de ella. Um, entonces es que no es realmente como si pareciera muy complicado, pero en realidad no es, um, ese complejo. Es como si se viera muy raro. Por lo tanto, seis path upend, siempre path path APS y luego siempre path. Ten un porro aquí. Incluso tengo problemas para hacerlo bien. Entonces ahí lo tienes. Entonces su nombre fuera de archivo y luego cuatro padres es al final para que coincidan con ver o tres? No
, son tres. Está bien, Perfecto. Um, entonces vamos a hacer desde matraz um e X t script. Vamos a importar el manager y el servidor, y esos manager y servidor son básicamente los que nos van a permitir ejecutar python, administrar bla,
bla ,
bla , y y cargar o servir la aplicación. Entonces aquí vamos a importar la app, y esa es la de la Unidad B.
Y.
Y vamos a instancia de Y. que se comió a una mánager de esa app. De acuerdo, entonces ahora, um, qué con el gerente, Lo que podemos hacer es importar o agregar comandos al frente de ese gerente, y hay varios, um, métodos que vamos a estar usando. Pero vamos a usar este inicialmente, que es el,
um, um, comando del servidor
equivocado. Entonces la forma en que hacemos eso es definir servidor de ejecución, y lo que eso hace es iniciar el servidor con la siguiente, um, configuración. Entonces vamos a ir a usar los grupos parkour, usar el Parker igual a true, usar freeloader para que cuando cambié el código, automáticamente recargue dijo que el anfitrión va a estar en esto es como un específicamente como
vimos esto en la sección pasada. Es para la nube nueve. Entonces vamos a definir esto p y luego poner 000 y luego el puerto va a ser que yo soy el entero fuera del sistema operativo. Consigue el puerto E M V y luego 5000. Está bien, Perfecto. Estoy recibiendo un error aquí en la aplicación wearable fina. Ah, desde flash mirando aplicación aburrida, no estaba en anexar. De acuerdo, así que ahora, para que ejecutemos esta aplicación um, haces esto va a sonar familiar. Si nombre es igual a principal, entonces Gerente Ron, que es un poco diferente. Entonces este gerente corre, básicamente ejecuta ese gerente, y entonces ese gerente va a tener un comando. Entonces mira, hay inválido en sintaxis si media es igual, doble igual, ¿
verdad? Enfriar. Por lo que tenemos nuestro me manejó. ¿ Por qué? ¿ Listo? Y casi estamos listos para correr el primero decirle a un mundo. De acuerdo, así que intentemos eso. Yo sí Control escapó para traer arriba la terminal. Y, um Oh, entonces lo primero antes de que hagamos nada, realmente no
hemos instalado ninguno de los requisitos Txt, um, bibliotecas. Por lo que necesitamos hacer eso. Y la forma de hacer ese tema hacen peeping stall. Ése son nuestros requisitos. Txt. Y déjame maximizar eso para que puedas ver la salida. Um, y básicamente, pasa por el archivo de requisitos y empieza a descargar todas las bibliotecas que
hay , Um, muy rápidamente. Entonces ahora está instalando, um, matraz. Se instaló por mi petaca secuela, alquimia
igual, script
plano y algunas otras bibliotecas ayudantes que están relacionadas con eso. Entonces deberíamos estar fijados,
um, um, tal vez significando mi inicio. Y así ahora, en lugar de hacer Python, ya
sabes. Hola, alambre
P. Lo que sea que tuviéramos. Ahora tenemos un B y gestionado Así que sí me manejamos. ¿ Por qué? Servidor redondo Perfecto. Entonces ahora parece que está corriendo. Dice correr en su para ser 80 80. Ahora, recuerda, no
haces click en eso porque ese no es el rial, um, tus l palabras corriendo tienes que ir a compartir y luego dar click en el en la app, um, en el en el enlace de aplicación, que es el 2do 1 Así que si doy clic ahí abierto y ahí tienes, tenemos hola mundo. Entonces esa es la replicación ahí mismo. Um y eso significa que está funcionando perfectamente bien con este nuevo tipo de, como, ya
sabes, configurar que tenemos que lo hemos hecho. Ahora lo que me gusta de los datos y lo
que deberías ser, ya sabes, apreciar ahora es que es muy es un enfoque muy modular. Vamos a tener casa. Los vamos a tener
, caballeros. Vamos a tener, ya
sabes, posts. Va a ser muy escalable. Y así es como lo hacen los programadores profesionales. Ah, se
puede decir a un profesional de una especie de, um ya sabes, desarrollador
inicial. Si los si no marginan suben sus cosas, él sólo Simplemente tiran todo en una carpeta. Entonces vamos a estar manteniendo este tipo de estructura. Recuerda, cuando creamos una nueva carpeta con un nuevo módulo, entonces vamos a tener que,ya
sabes, ya
sabes, en eso desde casa o desde cualquier vista de importación. Um, pero eso es todo. Y después de eso, ya
sabes, eres capaz de separar todo lo que sabes, eres lo que llamamos modelos, que es que vamos a ver un poco más adelante, que es la base de datos más antigua. Esquema nosotros para eso Para eso, para la mesa o para ese módulo, etcétera. Entonces, um, ya
sabes, toma lo digo en serio. Dedo del pie, echa un vistazo a esto. Y, um, hay un enlace ahora, aquí en el, um en el recurso es donde puedes descargar todo este código, Um, para que puedas comprobar si estabas escribiendo o si hiciste alguna cualquier error, puedes saber
49. El modelo de autor: De acuerdo, entonces ahora vamos a empezar a trabajar en nuestro modelo y la forma en que hacemos esto es nosotros, uh definimos básicamente una clase que definiría el objeto autor. Y en este caso, va a ser la gente que, um que va a poder crear posts y y gestionar el bloque en general. Entonces la forma en que hacemos esto es que necesitamos importar esa clase db. Entonces recuerda, teníamos aquí la b igual a la aplicación de alquimia secuela. Entonces vamos a hacer eso, um, haciendo lo siguiente. Entonces lo hacemos desde matraz, tapón, importación, BB. Y de esa manera tenemos la secuela. Alquimia. Um, básicamente habilitado, um, para poder hacer este desmantelamiento para este autor. Entonces, ¿cómo hacemos nuestro modelo? Um, entonces básicamente, es una clase. Entonces vamos a tener imaginar h autor va a ser una, uh, una instancia de este vaso, y vas a poder seleccionar a un autor específico y luego poder ver ahí sus nombres o correo electrónico, etcétera . Entonces empecemos a hacer eso Para que puedan ver cómo se ve eso. Entonces ten un vaso. Autor recuerda ser modelo. Entonces lo primero que vamos a poner. Um, ESA Propiedades I D e ideas s que recuerdas de la última sección es básicamente un olor incriminatorio. Um ah. Número entero que eso aumenta con cada nuevo registro. Entonces es lo mismo aquí lo mismo. Entonces hacemos db la columna. Y, ah, básicamente, una columna es una de esas propiedades de la de esa tabla y aquí definimos qué tipo columna, Um, en este caso, es un entero así que nosotros sería entero. Y también vamos a decir que esta es la clave principal para esto para el establo. A continuación, vamos a crear un nombre completo, um, columna y éste va a ser una cadena, y podemos definir cuántos caracteres. Entonces digamos,
uh, uh, vamos a recoger 80 para el nombre, luego para el correo electrónico. Vamos a hacer otra columna. También va a ser ah, eso es bebida. Pero en este caso van a ser 35. Y también puedes pasar si el, um si ese Colin va a ser único, y solo queremos un autor con el mismo correo electrónico por mesa, así que eso se va a hacer cumplir. Vamos a tener un nombre de usuario y en este caso también va a ser string off 80. Y también es único que no queremos No podemos tener dos usuarios diferentes con el mismo
nombre de usuario siguiente contraseña, y la contraseña va a ser una cadena de 80. Y finalmente, vamos a tener una bandera, el lino círculo porque son, como, algo así como, um alterna o especie de ajustes. Y se va a llamar East Author. Entonces a pesar de que la columna o la tabla más bien su autor, queremos poder establecer autores que sean capaces de publicar. Y, um bueno, son autores. Van a ser como sólo, um sólo pueden comentar. Por lo que es como ojos que esta persona permite publicar en este bloque o no. Y decidí hacer eso,
um, um, una bandera y el lino suelen ser toro. La brillantez de Ian significa que es cierto o falso. Así es. El autor se va a poner en verdad si esto si esta persona es capaz de, um, dedo del pie post al blogueado versus simplemente comentarlo o, ya
sabes, leerlo. Entonces eso es eso. Esa es nuestra mesa ahí mismo. Entonces cuando la secuela Akemi corre, um, Ah, en esta aplicación, mapea estas columnas sobre la mesa a estas propiedades fuera del off the author Arctic. Y ya veremos. Ya sabes, vas a estar viendo cómo funciona eso en,
uh, uh, en la aplicación en breve. Um, así que a continuación necesitas definir un en él, que es básicamente lo que sucede cuando el objeto se define por primera vez. Y queremos poder básicamente permitir que el,
um, um, ya
sabes, necesita pasar ciertas columnas que se requieren para que creemos que optó. Entonces vamos a tener Ah, vamos a necesitar nombre completo,
um, um, correo
electrónico nombre de usuario contraseña, y voy a establecer por el pliegue es el autor es falso. Entonces a menos que anule eso cuando creo el objeto por primera vez o cualquier objeto que sea que nos pase cae. Entonces me llamé yo nombre completo. Entonces en este caso, este auto viejo nombre es este nombre completo de aquí, y estoy pasando el nombre completo. Eso fue, um, rápido. Cuando el cuando se crea el objeto. Lo mismo aquí. El correo electrónico de auto equivale al propio correo electrónico. Nombre de usuario es igual a nombre de usuario. Palabra auto rápida equivale a contraseña. Y vas a ver este,
um, um, este tipo de patrón fuera, um, regularmente como, um como lidias con la alquimia secreta porque es como si fuera una buena manera. Por ejemplo, si tuviéramos una fecha en algún lugar aquí, podríamos establecer automáticamente el día para que sea hoy estado. Y el tiempo de hoy eso que esta en ella especie off like function te permite pre poblar y asegurarte de que los objetos creados la manera correcta de recordar esta muerte en ella sólo se va a llamar cuando tú cuando llamas a esto cuando tú En lugar, se comió esta clase en un nuevo objeto por primera vez. Um, y hay otro método llamado, um reproducir O R E b r que básicamente te permite, um ¿cómo quieres mostrar esto cuando estás interactuando con él en, digamos, el terminal? Entonces la forma en que vamos a gustar, um, algo así como identificar estos registros es que vamos a solo decir autor,
um, um, persona lo son, que es, um, y cuando acababan de pasar el nombre de usuario. Entonces cuando nosotros cuando enumeremos o cuando busquemos objetos, va a decir,
Oh, Oh, este es el record off author,Ya
sabes, Ya
sabes, di pobre hey o lo que sea el uso de una señorita. Entonces eso es más o menos los modelos. Um, ya
sabes, la primera vez que ves este Cisco es amable un poco. Algo así como confuso porque no eres como no has visto cómo interactuamos con,
uh,
con esos objetos, esos objetos, pero se va a familiarizar más a medida que sigamos trabajando con el con la clase.
50. Configuración de el ORM: De acuerdo, entonces, um, vamos a tener que inicializar ahora la base de datos para que podamos empezar, um, creando básicamente, um, modelos para diferentes modelos. Y una cosa que quería hacer A Así que pensé más en ello era modificar este
directorio de inicio y renombrarlo Blawg. Y la razón es que voy a tener que parar módulo para la página principal. Vamos a tener un módulo para cualquier cosa que sea realmente toe the blawg y una función hogareña estaría dentro de ese módulo. Entonces voy a mover este movimiento blawg a venir, mudarme a casa a una cuadra porque ya puedes ver ahora tenemos blogueo ahí, y tenemos las vistas, etcétera. Y tenemos que cambiar esto desde vistas de importación domiciliaria. Y, um y creo que dicho eso, es Eve la que funciona mal servidor y se volverá a cargar aquí. Sí, así que funciona divertido. Perfecto. Entonces ahora necesitamos,
como,
configurar como, la base de datos, y lo primero que necesitamos hacerlo es realmente crear una base de datos para nosotros. Entonces, um, de la última sección, no
sé si te acuerdas, pero, um, sabes, el, um, nube nueve ya tiene básicamente un construido en mi servidor de secuela que debilita Simplemente apalancar. Um, y podemos empezar, um, usando los ratones Equal city L um, atajo. Entonces la forma en que empezamos que un jarrón aquí es mediante el uso de mi secuela CDL inicio yo el un tipo de ahí, por lo que no es agradable igual, pero mi soltero, correcto. Entonces recuerda notar a este usuario de la carretera, porque lo vamos a usar, y va a ser diferente para ti. Pero si hacemos una pantalla completa ahí, verás que instaló mi secuela. Ah, se detuvo y luego comenzó. Um, y entonces es ah, se creó en eso. Todos para nosotros llamaron c nueve. A pesar de que no vamos, como, técnicamente vamos a usarlo. Entonces, um, pero mi secreto ya está ahí. Entonces lo que queremos hacer es crear una base de datos para que lo utilicemos. Y vamos a llamar a eso,
um, um, que basé el blawg la base de datos de tipos. Entonces solo hacemos mi secuela, CTL Ah cli, que es la interfaz de línea de comandos. Perfecto. Entonces si sí muestro bases de datos ahí dentro, veo esa 1/2 c nueve, que es la que se creó para nosotros. Ah, esquema de
información mi rendimiento de lentejuelas dado, que son mis bases de datos de secuela. Entonces vamos a hacer crear base de datos, y luego vamos a hacer un blawg. Perfecto. Entonces ahora, um, Así que ahora tenemos un ese segundo. Si es si está creado, y sin embargo está dentro, está ahí dentro, así que deberíamos estar bien. Por lo que ahora sí controlo el o tipo de salida semi colon la primera semana. El 1er 1 que vamos a hacer está bien, tenemos que poner esto en guardar hablar. ¿ Por qué? ¿ Para que podamos acceder al archivo? Um, la base de datos lo siento de la de la aplicación. Entonces para eso, vamos a necesitar agregar algunas cosas aquí. Una es que tenemos que hacer SO de importación, y luego vamos a tener que seguir. Vamos a tener, um, db use su nombre igual. Y recuerda que, um, ese uso de su nombre que nos dio la base de datos configurada. Ese es el cuando estás en un poniendo su, entonces necesitamos tener la contraseña ser. Vas a dejar eso en blanco, y van a tener la base de datos de registro. Nombre es igual al log, que es el que acabamos de crear. Y luego vas a pasar. El huésped de la abeja es igual o s punto Obtener E M V. Esto es para, um, Nube nueve. Si estás ejecutando mi secuela localmente o en una máquina de lino o alguna otra como si estás usando docker, entonces esto va a ser diferente. Um, este es muy importante para ser la vista o yo y tú vas a hacer exactamente esto. Mi secuela. Además por mi secuela Di, mi slash slash de colon por ciento s y este es nombre de usuario y contraseña en el nombre de host slash el nombre de la tabla? No, esto es por ciento lo siento. ciento s y por ciento s y luego simplemente reemplazamos esas todas esas cosas con Devi Nombre de usuario ,
um, um, contraseña
D B, host de
TV y nombre de base de datos blawg. Está bien. Y por último, vamos a hacer secuela de base de datos de alquimia. Tú eres yo igual Tal vez tengas razón. Entonces realmente, la que se requiere viable es secuela alquimia Eso obviamente está bien. Pero lo pongo como las cosas porque es y él está aquí sólo para editar. Si tienes un nombre de usuario o contraseña diferente, básicamente
estamos creando la cadena de una manera agradable, como, como,
secuencial para que puedan ver cómo se ve esto. Pero también podrías,
como, como, simplemente eliminar todas esas líneas más antiguas de aquí y simplemente poner secuela de que un sencillo como yo que es tu derecho equivale a mi secuela más Mike secuela y luego todas reemplazando todas esas cuerdas con el con los diferentes valores. Pero creo que es más agradable de esa manera Se ve mejor, más legible y la legibilidad siempre es importante. De acuerdo, así que ahora necesitamos agregar Ah secuela Bloqueándome a r N un archivo p y. Y así para eso vamos a tener lo siguiente de matraz dot e x tedx Pensamiento secuela, Alchemy Import secuela Voy a ponerme bien Y vamos a añadir una nueva diversion una nueva bandera. Aquí te presentamos nueva propiedad a la que vamos a poder llamar desde cualquier parte de la aplicación llamada DB y la base solo una instancia off secuela Alquimia con la APP um, pasada a ella. Entonces a partir de ese punto DB, los agujeros son nuestra base de datos. Entonces ahora lo que queremos hacer es,
um, um, crear Vamos a crear nuestro primero,
um, correcto, correcto, el nuevo módulo de aplicación, que es el módulo de autores. Y ya sabes, esta sangre va a tener autores que van a ser como iniciar sesión. Vamos a tener ahí. Van a tener que registrarse inicialmente, y luego necesitan iniciar sesión antes de poder publicar un bloque de libros. Entonces sigamos adelante y creemos ese módulo. Entonces vamos a crear una nueva carpeta, y se va a llamar autor. Y así recuerda cuando hablamos del controlador Model View en la última sección donde
sabes mucho de estas aplicaciones? Síguelos. Vista del modelo, controlador, um, patrón y ella Básicamente la idea es que se separa en diferentes componentes o archivos
indiferentes casi en la aplicación, cualquier cosa que esté relacionada con diferente partes de la misma. Entonces el modelo es para las operaciones de base de datos vistas son los controladores, que es algo así como un poco, um, confuso. Pero las vistas en el, um, en matraz y también en otras plantillas de python son en realidad los controladores o el mar de
las vistas de la NBC están en realidad en ese patrón NBC son las plantillas, por lo que es un poco confuso. Algunas personas lo llaman el patrón V vacío en matraz y más joven porque son
plantillas de modelo y vistas. Pero las vistas son los controladores y las plantillas son los, um, son los son los puntos de vista. Entonces, en cualquier caso, lo importante a recordar es que siempre vamos a separar las plantillas, que es la capa de presentación o la vista. Los modelos, que son las operaciones de base de datos en el en un archivo llamado Modelos y los controladores, que son los que enrutan el que tiene la ruta, Um, cuáles son las vistas? B y en matraz. Entonces sigamos adelante y creemos aquí unas vistas para que tengamos eso y vamos a tener un ahora un nuevo archivo llamado Modelos B Y. Y ahora sabemos que vistas que va a tener va a ser nuestros modelos de controlador va a ser la base de datos operaciones. Y vamos a tener aquí una carpeta de plantillas con la misma estructura para que separemos también como cualquier, um, cualquier vista o cualquier capa de presentación para la aplicación. Y antes de que nos olvidemos, sumemos esto al al PND. ¿ Por qué? ¿ Rumor? Siempre que tengamos un nuevo módulo, necesitamos hacer esto desde vistas de importación del autor. Guardemos eso. Y así ahora vamos al It va a las modelos. Um me refiero a las vistas del autor, um, vamos a poner un poco de positor relleno su para que lo supiéramos. Sabemos que está funcionando. Entonces desde frasco, blawg, app de
importación y luego vamos a tener una ruta de siesta y lo llamaremos iniciar sesión. Y ah, ahí es donde los autores iniciarían sesión. Y así ahí, encuentra a Logan y luego sólo regresa. Hola, usuario. De acuerdo, um, otra cosa importante para recordar. Siempre cuando creas un nuevo módulo, que es un nuevo, como una carpeta nueva, Um, necesitamos agregar un n it p y en él para que podamos importar de otros lugares. Y en realidad, me acabo de dar cuenta de que nos olvidamos de hacer eso en Blaga. hinchan. Funciona porque no hemos importado bloqueado desde ningún otro lugar. Pero siempre es una buena práctica, porque entonces podemos hacer podemos ver desde puntos de vista blawg. Um ah. Importar algo. Entonces eso es todo, Um Así que ahora vamos a tener, um vamos a definir nuestro modelo. Y, um así que empecemos a trabajar en eso
51. Interactuar con el ORM: De acuerdo, entonces veamos cómo interactuamos con el con este modelo. Y así la forma en que vamos a hacer eso es, uh, recordar cómo teníamos Python shell y podríamos hacer cosas con la con la aplicación desde ahí, Um, en este caso, porque nosotros tener gestionar B Y aquí, gestionar nos permite al instante un shell que tiene el, um esta aplicación cargada en memoria. Entonces esa es la forma en que iban a hacer. Um, vamos a jugar con la aplicación llamando a esta python administrar a la gente que shell y ya verás aquí. Me di cuenta de esto cuando estaba haciendo esto. Inicialmente, tiene este tipo raro de mensaje como, ah, ah,
alerta. No es nada como,
um, um, muy urgente o nada por lo que estar, ya
sabes, preocupado. Pero yo estaba leyendo al respecto, y resulta que la alquimia secreta necesita que este ajuste se diga a verdad, para que no veamos este mensaje de error. Entonces voy a seguir adelante y en esto a la, um, a la configuración ser por qué? Para que no vea este este este mensaje aquí y no afecta realmente cómo funciona la base de datos. Entonces vamos, uh es a una salida aquí. Y déjame, um, maximizar esto y despejar la pantalla. Uh, espera. Está bien. Y vamos a hacer de nuevo para manejarme. ¿ Por qué otra vez? Y ah, ahora no tenemos ese aire, Pero en todo caso, um, ¿qué quieres hacer la primera vez que vamos a interactuar con él con esto con este modelo o con este objeto? Um, las tablas tienen que crearse porque, como recuerdan, tenemos que bloquear que fui creado, pero no tenemos tablas en ella. Entonces la forma en que haces eso es, um, ya sabes, tú primero, tienes que, como, insertar, um, o importar BB de tu aplicación. Entonces vamos a hacer desde flash blawg importar BB, y luego tienes que importar los modelos que vas a estar usando. Entonces en este caso, lo vamos a hacer desde modelos de autor. Autor de importación. Um, también
puedes empezar si tienes, como, múltiples clases like ahí dentro. Um y eso los importará a todos. Y luego finalmente hacemos esto. Ah, este devi cómico crea todo y lo que hace es que crea todas las tablas para, um, la aplicación fuera de esos modelos que hemos importado. Um,
entonces, ¿cómo podemos comprobar esto? Um, es bastante fácil comprobar que podemos. Abramos otra ventana terminal y llamemos a la mi secuela. Cli Ah CTL cli. Correcto. Um así que si muestro ah, lo
ponen en gorras. Entonces seguimos nuestras bases de datos estándar, uh, hombro. Entonces el de ases. Entonces si usamos bloque aquí, Ok, ahora sí mostramos tablas. Ya verás que se creó el autor. Um, y si seleccionamos estrella del autor, verás que no tenemos ningún registro. Entonces eso es bueno que eso signifique que la tabla del autor fue realmente creada por la base DB Ahora, . recuerda, si tuviéramos más viejos, um ah ,
otros modelos, tendrías que importarlos antes de hacer eso para ser cuna. Entonces si tienes, digamos que teníamos un blogger que teníamos, um, es un posts para los que importarías esos modelos. Para que esa secuela alquimia sepa qué, sé cuáles son los modelos reales fuera de tus aplicaciones. De acuerdo,
Entonces, ¿cómo ahora interactuamos con los establos? Um, entonces básicamente, vas a crear, um on author object desde el modelo con el que trabajamos antes. Entonces no sé si recuerdas esto. Entonces sería todas estas todas estas cosas y recordar inicializar o establecer un nuevo objeto . Vas a tener que pasar esto ah, ganadores
de medio tiempo aquí. Entonces hagámoslo. Vamos a decir que autor es igual a autor, y tú comprimir entrando ahí y, uh, rumor Cómo dijimos, ya
sabes, yo d era mayor dramáticamente. A ver cómo no lo tengo aquí porque se va a crear automáticamente para también no hay necesidad pasar i d Pero vamos a dio Básicamente nombres completos son nombre completo seria o hey, Escobar. Y luego vamos a tener el correo electrónico sería Jorge a partir de cero punto io y luego usar el nombre sería Jorge. Y entonces la contraseña sería 12345 y su autor porque se ha dicho toe false por defecto , um, simplemente no
podría pasarlo como acaba de terminar aquí o pasarnos. Cierto. Entonces eso es todo. Y cerrar paréntesis. De acuerdo, entonces ahora tenemos un autor, y si lo hago autor aquí, ya verás. Recuerda cómo hablamos de la reproducción de rep ver cómo el río siente eso. Y me dice que el autor es ahora una instancia fuera de autor con el nombre de usuario pasando ahí, así que eso es bastante útil. Pero, um, ¿ya es esa base de datos interna? Entonces que zoológico otro, seleccione su y vea qué sucede. No, no
lo es. Por lo que hay dos pasos en realidad para poder meter eso en eso base. El primero es que necesitamos crear una sesión para que hagamos devi session oferta impar, y eso es que se llama una especie de como un pre commit. Básicamente, una sesión es algo así como puedes hacer múltiples cosas en cada llamada a la base de datos. Entonces podríamos hacerles saber, podríamos sumar cinco autores aquí, y nos gustaría simplemente el final de esas cinco definiciones, hacer un commit, que es algo así como Ok, ahora dijo esto es que una base y eso nos ahorra tiempo porque en lugar de ir y venir , podemos hacerlo solo una vez. En este caso, vamos a hacer sólo a uno, así que está bien. Ya terminamos aquí. Entonces ahora hacemos db session commit, y es entonces cuando las bases de datos realmente llamaron y estoy obteniendo un, um, básicamente un registro creado. ¿ Y cómo reviso esto? Bueno, podemos ir aquí y luego seleccionar Estrella del autor. Ahí vas. Tenemos nuestro primer disco creado a partir del Orán. Entonces y ahora si hago autor, d aquí, veo que consigo un i d Esa idea es la que mi secuela creó para nosotros. Y al mismo tiempo, puedo hacer autor atracado. Ah, ya
sabes, nombre
completo. Y voy a conseguir mi nombre. Entonces veamos cómo ahora que registros ese registro en la base de datos se ha convertido en algo así como un objeto, y puedo hacer cosas con él. Está bien. Y cómo consultamos, como, cómo hacemos Seleccionar estrella del autor aquí. Um bueno, vamos a crear otro usuario para que sea un poco más, um, divertido. Entonces voy a hacer que puedas hacer autor otra vez porque no vamos a reutilizar eso. No lo estamos. No vamos a hacer nada con él, así que voy a crear otro año. Um, digamos John Smith, ¿verdad? El correo electrónico usa John en el ejemplo dot com usaron su nombre es John. Y las preocupaciones pasadas fueron 2345 Y también es autor. De acuerdo, así que ahora si pring autor, consigo al autor John Perfect. Entonces una vez más, Devi sesión D b sesión uh, autor y D v comentario de sesión. Ahora bien, si veo en mi secuela, tengo mis dos discos ahí dentro. Perfecto. Entonces ahora, para que yo vea déjame conseguirme o conseguirme a todos los autores en la base de datos, hago lo siguiente hago autores iguales. Ah, autor. Y luego vamos a tener una propiedad llamada Query and query nos permite filtrar para obtener objetos. Ah, por diferentes ajustes como. O podemos hacerlas todas. Entonces si hago autores consulta Oh, parece que no hizo nada. Pero ahora, si hago autores aquí, verás que tengo una lista fuera de los objetos. Entonces autores, ojos u odio y John. Entonces si hago autores autores fuera de cero, ese es el primer ítem de la lista. Voy a buscar a Jorge. Y si hago autores de uno, traeré a John y lo mismo aquí. Ya sabes, si hago autores un punto nombre completo, obtengo el nombre John Smith. Um también podría hacer un filtro de consulta por. Por lo que autores iguales autor, consulta el campo ella por y luego puedo simplemente pasar el, uh, parámetro. Entonces eso es un que es un nombre de usuario igual a Jorge. Y, um, yo también podría conseguir el en lugar de conseguir todos los discos aquí, yo sólo digo primero. Por lo que ahora los autores tienen un registro, y es el autor, Jorge. Entonces veremos mucho de otro tipo de cómo interactuamos con la base de datos en unas lecciones posteriores, posteriores. Pero esto es como un buen comienzo para que visualicemos cómo interactuamos con esto o en Ok, Entonces antes de seguir adelante, no
queremos seguir teniendo todos estos, como datos en, um en el mesas. Entonces vamos a tener, um vamos a usar un método que utiliza la alquimia secuela. Entonces la forma en que lo hacemos de nuevo, tenemos que importar el, um, el objeto db y en fort los modelos aquí. Pero, um así que la forma en que lo haces es hacer el compromiso de recesión profunda por si acaso hay alguna
operación pendiente y luego haces db drop all y eso borra todas las tablas de aquí. Entonces si sí mostramos tablas, verás que ahí no hay tablas, pero aún tenemos nuestra base de datos. Entonces la sangre está ahí, así que ten eso en mente. Um, recuerda a la profunda recesión comprometerse primero porque hay un error que si llamamos a Debbie, deja todo sin esta devastación cometer,
se cuelga indefinidamente hasta que te gusta el control. Ver, Entonces pero estamos listos para empezar de nuevo, y vamos a pasar a la siguiente sección ah donde vamos a empezar a trabajar un
poco con formularios y vamos a ver cómo hacemos eso.
52. La plantilla base y el bootstrap: Vale, Entonces, um ahora mismo tenemos Ah, bastante básico como, hola, mundo Estando así ahí. Y como recuerdan, esto estaba en las vistas de bloque. Tenemos estos regresan en un mundo, que,por
supuesto,
no es por
supuesto, muy bonito de mirar. Entonces una cosa que voy a usar aquí, y no voy a meterme en muchos detalles fuera del en el frente, dentro o el look and feel, pero quiero crear una base, um, basada en plantilla html para que pueda empezar a poner algo, um, algo de la mirada y sentir juntos por estas cosas. Blawg te puedes seguir y vas,ya
sabes, ya
sabes, al mirar cómo hago las cosas, podrías conseguir algunas,
como, como, ideas
básicas sobre cómo trabajar con bootstrap y, um y J Query, que son dos de las cosas que voy a usar. No obstante, como he estado diciendo, otras lecciones probablemente cubren frente y cosas en otro curso, y los mantendré actualizados. ¿ Cuándo? Cuando eso suceda, puede asegurarse de gustarme, um, ya
sabes, seguirme en Twitter desde a través de EU o ir desde siria punto Io instruyó la noticia más tarde para que puedas mantener, ya
sabes, en contacto, um, conmigo en términos fuera, como, ya
sabes, nuevos cursos que vienen. Pero por ahora, vamos a Ah, vamos a crear este HTML base. Y para eso, vamos a crear una nueva carpeta, Plantillas
Cold. Y si recuerdas de nuestra primera de nuestras plantillas de sección anterior es básicamente donde estamos matraz espera que guardes todo el viejo intento para el para la aplicación. Entonces lo voy a hacer cuando se presente aquí, y voy a llamar a esto el HTML base. De acuerdo, entonces vamos a hacer html básico. Um, vamos a configurar esto como un, um eso es un documento html cinco tipo off y nosotros para encontrar el lenguaje aquí. Um, entonces vamos a tener cabeza. Y esto, por cierto, es como un tipo mínimo fuera como, uh, html cinco plantillas o estás trabajando. Bienvenido a tipo de usarla para sus propios proyectos. Esto establece el personaje según utf ocho. Así que debilita la pantalla correctamente todo lo que sabes, personajes
internacionales si tenemos alguno y vamos a tener un, um yo edge, que es la configuración de Internet explorer, y también estamos tomados en consideración para móviles aplicaciones o renderización móvil. Entonces si alguien recibos son página desde mi móvil, um, pueden ver el contenido correctamente con igual dispositivo con y coma en la escala de shell es uno. Está bien. Y finalmente, vamos a tener un título, y ese título va a tener un bloque que vamos a definir dentro del templo que eso llama a esto y luego y bloquear. Genial. Entonces ahora aquí, vamos a tener, um vamos a insertar bootstrap. Y para eso, recomiendo conseguir bootstrapped directamente de un de su ciudad en para que no tengamos que servirlo nosotros mismos. Entonces déjame conseguir eso en un segundo. Pero déjame solo sentir esto. Perfecto. Y eso termina nuestra cabeza. Ahora vamos a tener un cuerpo y déjame aclarar esto aquí. Entonces, um, vamos a tener ah, clase de
contenedor. Y eso va a ser también un bloque que renderizamos desde la plantilla de llamada. Llamaremos a este contenido, ¿de acuerdo? Y por último, vamos a tener J query, que es requerido por bootstrap, y vamos a crecer eso más tarde. Y también tenemos el bootstrap Js. Estos son comentarios aquí, Lagas
raspadas. Te enfrías y guión. Perfecto. Está bien, eso se ve bien. um, vamos a agarrar la ciudad bootstrap y los valores para poner esto en esta plantilla. De acuerdo, así que vamos a traer esa ciudad aquí. Podemos conseguir,
um, um, viaje
en barco, ¿
Ves? Evaluar. Entonces vamos a reemplazar eso aquí y la J s. Y ahora sólo necesitamos J consulta. Ver, uh, vamos a buscar J consulta cdn. De acuerdo, así que lo ponemos aquí código una consulta 2.1 punto para perfecto. Entonces eso es eso. Entonces digamos esa plantilla y deberíamos estar establecidos aquí. Um, así que lo siguiente que vamos a estar haciendo es un, um un registro para el para los usuarios. Y para eso, vamos a empezar a usar una biblioteca llamada matraz WTF, que es, um, un set off utilidades para poder manejar formularios en, ah, una manera muy fácil y escalable. Así que vamos ah, vamos a seguir con eso
53. Introducción a WTForms: De acuerdo, entonces ,
um, necesitamos, um, conseguir formularios WTF, y esa va a ser una nueva biblioteca. Y para que eso se necesita sumar a los requerimientos, y solo dos personas lo instalan. Por lo que aquí agregamos matraz wtf. Y como dije, WTF te permite manejar formularios muy fácil dentro del matraz, um, en algún lugar entre el puesto. Entonces, entremos aquí. Y ¿la gente instala requisitos y que instalará flex WTF aviso cosas como WTF para estar ahí para nosotros. Ahora tenemos eso habilitado. Entonces, ¿cómo construimos una forma? Entonces formo básicamente vidas en el mismo, um, módulo que vamos a ser como usar. Entonces vamos a crear eso. Por lo general lo ponemos en un formulario, Dr. Ey Soul. Es a nuevo archivo y forma punto b Y. Así que el primero con ustedes es que Eanes importamos del matraz WTF formulario de importación, y vamos a importar algunos validadores y básicamente, por los años lo permiten Nos permite, um datos validados antes de que se ponga sin base. Y vamos a hacer campo Stringfield y Password también. Um, también
vamos a, um, validar el correo electrónico. Entonces eso es ah separado uno de la belleza de formas puntos campos dot html cinco
campo de correo de importación . Perfecto. Entonces, ¿cómo funciona? Bueno, necesitamos crear una clase que,
um, um, básicamente crea campos fuera de los campos a partir de ese campo que vamos a estar renderizando. que normalmente lo llamamos registrado para, ya
sabes, cualquier forma de acción, formulario de
registro en este caso porque vamos a registrar usuarios con esto. Y es una subclase off form, que es ladrón last o B a f wtf o así vamos a modelo más enferma. Entonces tenemos, ah, nombre
completo. Entonces vamos a hacer nombre completo igual a Stringfield. Y luego aquí pasamos lo que queremos mostrar en el tipo de, como la descripción del off ese campo. Entonces en este caso es nombre completo. Y vamos a decir que este es un campo requerido de solicitud. Por lo que hacemos validadores requeridos aquí. Um, entonces tenemos un correo electrónico. Por lo que el correo electrónico es igual a un campo de correo electrónico. Um, y luego nos ponemos por correo electrónico la descripción, y también es ah, cuerpo que se requiere. Um, entonces tenemos un nombre de usuario, que también es un Stringfield, y luego simplemente ponemos a usar su nombre, y entonces vamos a tener múltiples valores aquí. Entonces vamos a abrir un corchete. Por lo que se requieren validadores y validadores longitud de punto. Fuimos dedo del pie como poner algunas restricciones. Un mínimo de cuatro máximo 25. Entonces si su campo es escuchar cuatro personajes, será que obtendremos un mensaje de error. Y si es más de 1 25 lo mismo y luego contraseña, queremos que sea un campo de contraseña encendido. Vamos a llamar a estos nueva contraseña y ¿por qué nuevo pasaporte? Bueno, ya
sabes cómo informa tenemos una especie de, como repetir la contraseña. Por lo que tienes Tienes que poner la contraseña dos veces. Aquí vamos a hacer algo similar, y verás que en un poco se requieren validadores. Um, vamos a tener ese validador. Son los ascensores a los que vamos a tener un igual e igual a significa que tiene que ser lo mismo. Preguntó el, um como segundo campo que yo confirmo. Y el mensaje si esto falla, es pase. Las palabras deben coincidir, después coma, vamos a hacer evaluadores mucho longitud y lo mismo. Al menos cuatro caracteres para la contraseña y máximo apagado 80. Y eso termina la contraseña, y luego vamos a tener un campo confirmado, que también es un campo de contraseña, y vamos a llamar a esta contraseña de repetición. Entonces, como se puede ver aquí, esto confirmado es el es el campo al que necesita, como, ser igual. Y si falla el mensaje, lo
pasamos. Él es contraseña. La mayoría administran. Um, eso es todo. Mira, tenemos en el aire aquí. Uh, campo de
contraseña. Sí. Me gusta mucho este editor de Cloud Line. Tengo que decir,
um, vale, vale, así que eso es todo. Entonces tenemos nuestro formulario listo para salir, y, uh, ahora, veamos cómo lo ponemos en la vista. Ah, Así que primero, vamos a tener, um vamos a ir a esto a la vista del autor aquí. Entonces definamos una nueva ruta hacia arriba. Y ese se llama registro, y vamos a tener a los métodos. Uno es un get y todos expuestos. Recordemos de la última lección, eso significa que vamos a renderizar el formulario aquí así como obtener la información de él. Entonces todo lo que hacemos ahora es más allá de la forma como para registrarse formulario. Pero espera, ¿dónde está la forma de investigación? Tenemos que importarlo. Um Entonces para aquí tenemos que hacer desde matraz. Vamos a tener una plantilla de modelizado o importar y redirigir después de que el usuario envíe y desde el formulario de autor formulario de registro de importación. Entonces ahora hemos corrido actuando aquí, Um, y vamos a devolver plantilla de render. Y no hemos hecho este año registro, ext. Correo electrónico. Y le pasamos el formulario. De acuerdo, entonces veamos cómo se ve esa forma. Entonces recuerda cómo dije que vamos a seguir el mismo tipo fuera como,
um, um, módulo como, estructura en la plantilla. Entonces vamos a hacer eso por,
um, um, por tener una carpeta de plantillas que, um, y dentro de ella, vamos a tener al autor, la plantilla del autor. Entonces, empecemos a hacer eso. Entonces en plantillas. Y cuando tenía una carpeta nueva y se llama,
um, um, así que la carpeta es autora, y vamos a tener un blawg, um ah. Carpeta dentro de plantillas también. Y aquí lo voy a hacer cuando se presente, voy a llamar a este registro html Cool. De acuerdo, entonces eso va a ser extendiendo el html base que nosotros la derecha anterior, y quieren hacer un registro de autor de título de bloque. Um, entonces el contenido con qué? Tienen papel de clase. Que es como, um, bootstrap define el tipo de, como las filas de contenido aquí. Vamos a tener una columna con on off set off. Tres. Esto es de nuevo las cosas con, um con correa sería. Esa es la forma en que funciona el sistema griego. Y, ya
sabes, puedes leer sobre esto. Um, Entonces vamos a tener un registro de oferta de título. Entonces aquí, donde el método de formulario iguala publicar una acción igual y recuerda, nunca,
nunca
ponemos real tu más. Aquí te hacemos, Earl, para leer Pascua. Y el papel es la forma. Esto también es requerido por bootstrap. Um, perfecto. Entonces, ¿cómo realmente mostramos un campo ah aquí? Entonces la forma en que hacemos eso es pasando un,
um, um, ¿qué se llama un grupo de última forma de Dave? Así es como bootstrap,
um,
agrupará um,
agrupará todo el campo, todas esas propiedades de campos. Entonces primero tenemos que poner una etiqueta de campo, y eso es como el, um, si ves el formulario, es esta parte de aquí, cuál es la descripción real del campo, um entonces tenemos que pasar también el campo real con un, um, un filtro de,
um,de um, plantillas
de matraz, que se llama seguro. Y básicamente, lo que seguro significa es que está bien renderizar las cosas en esto. Ah, en esta parte de aquí, um, porque sabemos que viene de nosotros, y no va a ser algo que es,
Ah, Ah, eso tiene que escaparse ni nada. Um, y, uh, esto hará eso por ahora. Es como la parte más sencilla de ella. Pero claro que conoces el campo. No es el No es lo que necesitábamos para reventar aquí. En realidad está ahí. El punto de forma porque la forma es lo que estamos pasando en la entrevista. Uh, ¿dónde está la vista aquí? Entonces estamos pasando el formulario y el formulario es el formulario de registro. Por lo que el campo en este caso sería el 1er 1 que es, si comprobamos en el formulario, es nombre completo. Entonces pongamos forma no nombre completo, esa etiqueta y luego ex doc nombre completo esa etiqueta derecha y luego formemos dot fulling. Y entonces tenemos que hacer lo mismo por ustedes saben, los siguientes. Pero hagámoslo solo para que te lo cuelgues. Y así, en este caso, sería correo electrónico derecho y luego correo electrónico, y eso representaría dos de los de los campos de formulario nombre completo y correo electrónico. Pero hay algo que luego te mostraré cómo gustarte, no hacer esto porque es como un poco de platillos de río. Y ni siquiera hemos puesto la parte donde necesitamos mostrar errores. Um, antes de que comprobemos eso, hay una cosa menos que necesitas pasar, y siempre usas esto. Hay algo llamado CSR F que se puede buscar ¿qué? Ya sabes lo que es. Pero CSR tienen básicamente hace que sea difícil para los hackers la visualización del dedo del pie, um, o el dedo del pie ataque de su forma con datos, y representa básicamente una, um, una sola vez como hash o fuerza aleatoria. Eso también se dice que es una cookie para que el servidor sepa que la persona, uh, o el sistema que es,
um, um, que está enviando esta información en realidad eres tú y no como un script que algún hacker tiene parado. Entonces para eso hacemos esta forma esa tachuela oculta. Siempre usamos eso al principio, fuera de su forma, así como así, y podrás,ya
sabes, ya
sabes, asegurarte de que el formulario sea seguro
54. Errores de formas: De acuerdo, así que veamos qué conseguimos aquí. Es Ah, es sólo para controlar el mar aquí y reiniciar su servidor. Y porque tenemos la,
um, um, la ruta Cuando cierro esto los rowdies por última vez registrados, Vamos a ver qué slash levantó sus espectáculos. Perfecto. Por lo que tenemos nuestra primera forma. Esto es Esto es tan genial. A. Para que veas que está renderizando la etiqueta y luego el campo donde puedes ingresar la información y está haciendo nombre completo y correo electrónico y veamos por un segundo la fuente para que veas cómo se ve eso. Y voy a hacerme un poco mis estados, así que tenemos más información. Entonces, como puedes ver, está solicitando bootstrap, el CSS su Esta es plantilla base más antigua. Ya veremos cómo está sustituyendo el título por registro de autor, que es lo que habíamos dicho entonces. En el contenedor real. Tenemos el contenido real aquí, que es que ver autoridad, compartir
callejero, y tenemos método publicar un nombre completo por correo electrónico todo eso. Entonces eso se ve bien. Um, noto que no hay, uh, él no habló aquí, lo cual es extraño. Voy a echar un vistazo a eso, pero en todo caso, ver cómo tenemos etiqueta para un nombre completo. Es poner la etiqueta ahí y luego la entrada i d. nombre
completo,
nombre, nombre, texto de tipo
cumpliendo. Y aquí está el tipo de correo electrónico. Entonces eso es algo así como trabajar perfectamente bien. Um, una cosa que veamos aquí. Um bien, entonces vamos a mandar esto a la registradora, así que va a No hay nada que vaya a pasar aquí hasta ahora. Entonces vamos ah, vamos a tratar de ver qué pasa cuando nosotros cuando realmente enviamos esto. Y, um así cuando tenemos que hacer es, um para que revisemos lo que la persona um, envió Necesitamos revisar el, um que el primero presentó. Y la forma de hacerlo es ahí se queda. Déjame esconder el, um chequeas. Es decir, si formulario dot validar en enviar. Y lo que eso hace es que verifique que, um, la forma no tuvo un error. Entonces, como recuerdas, hay algunas cosas que decían aquí, que es como, ya
sabes, esto se requiere. Eso se requiere. El uso de Amos Toby, Mínimo de cuatro Maximov 25. Es s O. Eso es um oh, yo tenía no había salvado la carrera a HTML. Es por eso que están forma etiqueta oculta no se mostraba. Entonces vamos a recargar eso, en realidad, vamos a recargar desde la fuente. Verity. Entonces esta es la RSE de ficha de este año de la que les estaba hablando. A ver, ¿cómo es? Renderiza esa etiqueta muy aleatoria. Y si no pones esto cuando tu pie al presentar flashes va a un poco como tirar su um, así que hay una ficha CSF. Bien. Um, así que volviendo a la vista, Um, si la forma tipo de, como pasa toda esta validación, entonces ejecutará el bloque if. De lo contrario, lo arroja de nuevo al a la plantilla de render. Y iban a tener unos, um, algunos errores que vamos a poder rendirnos. Um, así que esto es seguro por ahora. Vamos a devolver un redireccionamiento a, um, Euro para Y llamemos a eso un éxito. Y necesitamos importar ese Uriel cuatro, y vamos a tener ah, ruta
arriba llamada éxito. Y vamos a definir esto y simplemente volver a pesar de que en realidad no estamos haciendo nada. Padrón de autor. Perfecto. Um, entonces , claro, el problema es que no vamos a poder,
um, um, pasar esto completamente porque está requiriendo todos sus campos. Pero, um, vamos a entrar en cómo mostramos el error. Entonces lo hacemos haciendo haciendo lo siguiente. Um, así que vamos a poner los errores aquí en el fondo. Pero vamos a ver, Básicamente, lo que pasa es que hay un error de campo, um, clase, no propiedad de clase, eso es lo que está lleno de ese aire. Entonces si se trata de un formulario nombre completo que errores y esto suele ser como una lista, por lo que podría ser como errores múltiples, puede mostrar solo uno, pero es mejor simplemente mostrarlos todos. Entonces, um, es también. Y si aquí para cerrar eso y luego vamos a, um básicamente hacemos una lista fuera del aire. Así que bien, clase. Y cuando llamé a este texto peligro, que es como un fondo de ratas que, um, bootstrap proporciona y vamos a hacer por error en forma, nombre
completo que errores. Entonces es un es un look cuatro lo vamos a hacer y para, y vamos a tener aquí un elemento l I con el error mostrado. Entonces eso es todo ese bloque. Es los errores mostrando todo lo que hay es que eso para mi cabeza. Y tengo que copiar y pegar todo esto y ponerlo aquí en el correo también. Pero reemplazar el correo electrónico por ah por un correo electrónico de lluvia se aires. De acuerdo, entonces veamos si eso funciona. Um, hay otros errores. O sea, va a tener Se va a lanzar al aire por no tener el nombre de usuario, la contraseña y la contraseña de repetición en esos campos que ni siquiera están ahí. Pero veamos qué pasa si recargamos esto. Pero no estábamos ejecutando la aplicación. Entonces ahí lo tienes. Perfecto. Entonces, como recuerdan, el ponemos que el, um se requiere el nombre completo. Entonces cuando ahí que podamos tener es como simplemente pasar ese vacío y, um o ambos vacíos así tendríamos errores. Pero solo pongamos un nombre ahí y veamos cómo se ve eso sólo para la era del correo electrónico. Um, o mejor dicho, lo
haré al revés porque va a lanzar un error en el lado del cliente. Sé que te mostraré lo que eso significa, pero así que digamos que olvidamos el nombre completo, pero tenemos el correo electrónico. Si me registro ver, estos son los errores que ya funcionan. Por lo que se requiere este campo es el mensaje estándar de que ese cuerpo solo requería sentido. Pero puedes También te puede gustar, como aquí. Pero ya sabes, algún mensaje personalizado si querías. Um, y lo que quería mostrarles es porque esto es html cinco. Hay validación para el propio correo electrónico. Entonces si me gusta de cero punto io, que no es un correo válido, derecho y hacer registro, digamos que me sale un error. Pero esta zona no es de matraz. Es sólo porque frasco um, la plantilla o el formulario Está diciendo que esto es un tipo de email de campo, y si ves ahí, um, ves como dice tipo email que validará contra, um ah contra html cinco capa de validación, que es incluso antes de que incluso enviáramos al al al servidor. Si no estuviéramos haciendo html cinco entonces que nos pondríamos como un, ya
sabes, correo electrónico
invitado tipo de mensaje aquí, pero así todo está funcionando bien. Parece que lo estamos haciendo muy bien y es tan genial ya sabes, es que no se ve tan mal. Es ah si tenemos que poner toda la edad femenina como se ve aquí. Um, es como un dolor, porque es que hay mucho apagado, como cosas que necesitamos que nos gusten hacer el lado del servidor del lado flak. Y todo se proporciona automáticamente a hacer también formas en matraz con losa. WTF es realmente, realmente simple. No obstante, una cosa que va, um, que dicen los viejos programadores o programadores profesionales es que necesitamos apegarnos al seco um ah, paradigma o al patrón de um seco y medios secos. No te repitas, la R Y. Y si comienzas a ver en cualquier parte cuando estás desarrollando eso, estás repitiendo cosas una y otra vez, como cosas muy similares, eso debería ser una bandera roja para ustedes chicos. Eso significa que hay una manera de que tal vez podamos hacer esto en una preocupación más fácil. Al igual que hacerlo, um, más legible. Y en realidad hay una manera de esa manera. Se llama, um, Mac Rose y veremos a Micro's en la siguiente lección. Así que quédese alrededor
55. Macros: De acuerdo, así que vamos a reemplazar todos los días con, como, una macro y la forma en que funcionan las macros es que nos permiten, como, básicamente, amortizar ,
um, hacer piezas de plantillas sean suyas poco, como, incluir. Y, um, Pero lo bueno de las macros es que se le pueden pasar cosas, por lo que pueden ser reemplazadas dinámicamente. Entonces, ¿cómo funcionaría eso? Entonces lo que voy a hacer en realidad va a, um, reemplazar todo esto por una macro, y luego voy a insertar un liners por cada campo, que va a ser, ya
sabes, mucho más simple. Entonces voy a copiar y pegar esto, um, y voy a crear la macro en el nivel superior de las plantillas porque podría estar
usándola en diferentes, um, en diferentes formas. Um, a través de módulos. Por lo general, las macros se inician con otra puntuación para el nombre. Esa es una convención en general para nombres de funciones o nombres de archivo que la nota de que
no deben ser llamados por sí mismos. Siempre se les llama de otro lugar. Entonces vamos a seguir eso para formar ayudantes html. Y entonces cómo lo haces tú, Um, la macro final. Por lo que hay que poner un micro por ciento. Vamos a llamar a este campo de renderización, y vas a tener múltiples Micro's en un solo archivo. Entonces por eso son ex ayudantes. Podemos poner cosas aquí. Entonces, ¿qué pasa a un campo de macro Render? Bueno, los nombres de sentir. Entonces no tienes que Like, um, puedes
Puedes hacerlo renderizar dinámicamente cualquier campo ¿bien? Y acabas con el micro con nosotros. Podría haber adivinado y micro perfecto. Entonces ahora voy a enfrentarme a lo que hice. Um, antes. Um, aunque hagamos esto Ah, mejor sangría. Entonces, um, queremos tener el grupo de formulario de clase def para cada uno de ellos. Queremos tener el campo, nuestra etiqueta. Entonces en vez de para mí nombre completo, vamos a tener campo, me siento como y siento que va a tener lo viable de eso fuera de esa forma y lo mismo tu campo. Pero aquí, voy a pasar algo llamado argumento de palabra clave para que pueda pasar una especie de calificativos a esos campos y uno de ellos que no te mostré antes. Um, es como puedo Deberíamos definir los campos con cierta clase llamada um, control de
forma. Y eso es algo que ayuda, um, bootstrapped a renderizar ese campo. Entonces vas a ver que cuando nosotros cuando llamamos a la macro, Um, entonces no tenemos Ah, si errores de campo. Correcto, entonces un peligro de texto plástico. Eso está bien por error en los errores de campo. Y luego voy a tener ah, y para ti. Bueno, y si tienen caballa también Ok, entonces eso es eso es todo. Estaban establecidos ahí. Entonces ahora aquí. Voy a tener el,
um, um, debajo del registro de autor. Voy a incluir la macro aquí en esta plantilla. Entonces, ¿cómo se hace eso? Contamos con una de ayudantes de forma hace el campo de render m l importación. Entonces eso se parece mucho a la forma en que importas, ya
sabes, bibliotecas en el archivo python principal. Entonces eso es más o menos eso. Um Entonces va a ser muy fácil ahora incluir todos los campos porque lo que sabemos hacer es simplemente poner el siguiente campo render, y luego pasamos formulario, usamos su nombre, correcto. Y entonces este es uno de los quarks. Mantenga los argumentos de palabra clave. Clase es igual al control de forma. Y eso es todo. Ese es nuestro campo, ¿verdad? No lo hay. Increíble. Entonces ahora, en lugar de tener todo esto como crawdad ahí dentro como sentir etiqueta que forman nombre de usuario, corchos de
campo, todo lo que sólo tenemos que pasar esta sola línea y se encarga de todo por nosotros. Entonces ahora básicamente podemos hacer correo electrónico de forma aquí y ex Ah, contraseña. Bueno, me falta algo. Aguanta primero su nombre completo, ¿verdad? Sí. Bueno, nombre correo electrónico, nombre
completo correo electrónico, correo
electrónico, nombre de
usuario, contraseña. Y luego repite. Correcto. Correo electrónico de nombre completo. Utilizar el nombre pasaporte, y, ah, confirmar. Por lo que forma comodidad. Entonces veamos que funcionó. Um, es bastante emocionante, ya
sabes, Errores. Veo ahí. Entonces ahora vamos a recargar esto, y ahí tienes. Entonces mira, ahora cómo es, como, es estilo, un poco diferente. No tiene la etiqueta junto a ella. Eso es como un control de formulario, um, clase. Y así se ve bastante bien. Vamos algo
así, como registrarnos aquí. Y luego ponemos esto un poco más pequeño para que puedas ver mejor. Entonces si voy registrarme, Ver ahora veo, como todos los campos que son, um que se requieren. Y así vamos a hacer esta forma Jorge Escobar o hey, en de Siria. Dodi. Ah, usa el nombre es Jorge Password test. Y veamos si hago una contraseña que no coincida con la prueba también. Registrarse. Ver Pasaporte. La mayoría partido. Por lo que es verificar que las contraseñas no coincidan en. Mira esto. Ya está pre sintiendo las otras cosas fuera. Los pasaportes normalmente no reciben pre campo porque eso es algo de seguridad. Entonces si pongo prueba y prueba y me inscribo perfecto, llegué a, um, ir a Así llegué al éxito. Entonces eso significa que aquí eso, um que por invalidar presentar pasado y nos mandó a la página de éxito. Así que un montón de cosas divertidas aquí. macros son increíbles. Son son muy cool característica. Entonces y esto es tan legible. Al igual, mira eso. Es tan bonito. Se puede, ya
sabes, ver qué está pasando ahí dentro. Entonces, ya
sabes, las formas realmente son cosa salvadora de vidas, así que eso es más o menos. Tenemos mucho cubriendo eso último, ya
sabes, pocas lecciones. Entonces lo siguiente que vamos a estar cubriendo es, um, básicamente crear las modelos y almacenar algunas de esas cosas ahí dentro
56. Modelo y forma de blog: De acuerdo, así que ahora que tenemos ah, modelo de
usuario o modelo de autor, um, es hora de que empecemos a trabajar más en el modelo blawg porque queremos poder,
um, um, crear un blogueado cuando, um, nosotros tipo de, como iniciar la aplicación o el sitio web por primera vez. Um, si ustedes son, um, si ustedes tienen cinco trabajados con prensa de guerra en el pasado, sabrán que la primera vez que entren a su admin si no hay blawg que como una trampa, um, función fría para que puedas empezar a crear tu blogueado y queremos hacer algo similar aquí. Entonces, um, vamos a seguir adelante y crear el modelo de bloque y vamos a hacer un par de apagado. Ah, cosas
interesantes. Um, pero empecemos a trabajar en ello. Entonces vamos a seguir adelante y crear un nuevo archivo de modelo de bloque y modelos P y. bien,
Entonces, ¿qué queremos hacer con estos modelos? Bueno, lo primero que necesitamos importar es a través de la, um, la derecha DB. Y vamos a encontrar la clase blawg, que es ah, subclase fuera del modelo B. Entonces va a tener un i d Al igual que el que hicimos con el con autor que va a ser están en auto incremento, ¿
verdad? La clave primaria es igual a true. Va a tener un nombre, y esto es un string off 80 y va a tener un admin. Entonces el admin es básicamente la persona que crea el bloque y tiene, como, lleno, um, permisos a especie de como editado. Entonces vamos a hacer algo realmente interesante aquí, que es que vamos a hacer del administrador un enlace a la ah. Entonces el autor, y la forma en que hacemos eso es a través de algo llamado Claves foráneos. Y puedes leer más sobre claves foráneas. Um, en
línea en el sentido apagado, ya
sabes, en el espacio fuera de mi secuela y una clave extranjera básicamente dice que este registro admin va a ser un I d. off the author dentro del autor. Yo d. Y ha sido un punto para una persona. Ah, y así es como mi secuela va a saber que ese, um, ese, um, autor es básicamente así de específico. I d es thes e es el administrador fuera de ese bloque? Um ¿Qué? Vamos a jugar con él para que ustedes puedan comprobarlo. Entonces vamos a tener, um, eso Ah, en ella, vamos a tener que pasar el nombre y el administrador, ¿
verdad? Por lo que el autonombre es igual a nombre y el self admin es igual a admin. Y por último, uno de los tiene un método ah reproducir. Reproducir. Entonces y esto va a volver. Blawg por ciento lo son, y vamos a devolver el nombre. Perfecto. Entonces ese es nuestro modelo blawg. Tendremos un tipo de aquí, ¿verdad? Entonces ahora vamos a hacer la forma para esto. Entonces el ex B y y vamos a, um de matraz. Importación WTF para. Y así que íbamos a tener, um vamos a hacer algo realmente interesante aquí que, um, verás desde formularios WTF importar Stringfield. Entonces esto es lo que pasa aquí, um, en el formulario, um, en el conjunto de la forma. Se llama eso configurado para él. Yo quiero, uh, algo así como tendría que requerir,
como, como, ya
sabes, el nombre de la persona. Es decir, el nombre completo, el correo electrónico, ese nombre de usuario contraseña y confirmar, que es como, como
lo mismo se siente el autor, justo así y lo único que cambios es el nombre. Entonces vamos a decir que armemos eso. Entonces el nombre del off the form, es un campo de cadena y la etiqueta de campo iba a ser nombre de bloque. Y luego está abierta una llave aquí, y se requiere. Um, y limitemos la longitud de los llamados Toby máximo 80 caracteres. Y eso es todo. Correcto. Entonces tendría, um no, tengo que importar validadores aquí. Bali. Ahí está bien. Entonces Y lo siguiente sería como, ya
sabes, necesitaría el nombre completo correcto para el autor, ¿
no? Para el admin. Y luego Stringfield etcétera. Y luego tendría un correo electrónico y usaron su nombre. ¿ Ves lo que estoy diciendo? Entonces esto es algo así como lo mismo que teníamos en este formulario aquí. Entonces en cambio, fuera repitiendo de nuevo siguiendo el seco, Um, no te repitas. Entonces lo que voy a hacer es importar del autor ah form, y voy a importar el off the ah, ¿para qué se llama la navaja? Y porque esta es una clase, ya
sabes, igual que cualquier clase que puedas extender o te puede gustar, um, básicamente tan clásica. Entonces en lugar de forma aquí, voy a hacer formulario de registro. Y esto funciona porque maquinilla de afeitar, por faltarse a sí misma. Ah, una subclase fuera de forma justo aquí. Correcto. Entonces esta clase va a heredar todas las propiedades del formulario de registro, por lo que va a funcionar exactamente igual. Pero simplemente agregamos ese adicional, um, tipo de, um, campo de formulario
adicional, que es el bloque principal. Y eso funciona perfectamente, Vuelo. Entonces, ya
sabes, una vez más, algo así como, ya
sabes, pequeñas cosas que puedes hacer, para
que no tengas que repetir mucho fuera de la misma base central. Y si deseas agregar, como, una nueva y te sientes aquí, digamos que quieres anuncio. No lo sé. Um, ya
sabes, género o, um, alguna otra propiedad. No hace falta rehacer esto. Esto. Ah, este bloque configurado para él, puedes Se incluirá automáticamente.
57. Administración de blog y plantillas de configuración: De acuerdo, así que ahora vamos a trabajar en el on the blawg, um, capa de
presentación. Y para eso, vamos a tener que crear un nuevo directorio de plantillas para recordar cómo estamos siguiendo el modelo
NBC aquí. Para que, um, agrupamos todo el tipo de como las plantillas para cada uno un módulo. Entonces voy a crear una carpeta Blawg Templates, y dentro de ella, voy a añadir un nuevo archivo. Y, uh, vamos a hacer primero el administrador. Um, Y para el administrador, no
voy a hacer mucho, cual va a ser, ah, suficiente como, uh, marcador de posición por ahora, porque no vamos a realmente construir el admin. Vamos a construir el conjunto, pero podemos sacar esto del camino para que tengamos la,
um, um, la estructura básica. Entonces primero extendemos HTML básico, luego el título IHS va a ser blawg admin, y luego vamos a tener una clase diff igual a fila, y ahora vamos a tener una clase div, y vamos a hacer una columna Desplazamiento medio tres y lo llaman medio seis, lo que significa que es un Es un medio. Ah, SISE, um algo así como un escritorio. Sitios fuera de seis y luego pero con tres offset en el interior derecho. Entonces ahora aquí tenemos el bloque Admin title Blawg, admin. Y ahora sabes qué? Voy a agregar los mensajes flash porque probablemente vamos a tener muchos mensajes que, um nos dicen qué,
uh, uh, acciones se han hecho con éxito. Entonces Y recuerdas esto de la de la primera de la sección anterior. Entonces si tenemos mensajes flash para mostrar, entonces, uh, lo
vamos a hacer Si d mensajes y luego a ti vas clase flashes andi por cada mensaje en mensajes, vamos a un Bueno, yo con el mensaje. Bueno, está en ese bucle de cuatro y que todo lo que tú Ellis ya está ahí, Y entonces vamos a hacer un final. Si y y y con Perfecto. Y finalmente necesitamos terminar con el bloque. Genial. Entonces eso se ve bien. Ese es nuestro administrador. Html. Y así ahora vamos a trabajar en el conjunto de HTML. Y es solo copiar esto, um, en plantillas en plantillas de bloque, nueva instalación de archivos. Entonces vamos a copiar esta primera parte. Entonces es creación blawg. Y así que aquí, vamos a tener así que vamos a tener la
forma actual vamos a tener así que vamos a tener la
forma actual. Correcto. Entonces de ayudantes de formulario El texto email import, render field. Um, eso es toe a for method iguala post action igual que tú eres l para configurar y el rol es igual para Así que lo primero es, recuerda, ven srf token así que forman esa etiqueta oculta, y luego vamos a tener el campo extranjero real. Entonces voy a tener, como, diferentes rubros. Entonces voy a tener la información blawg primero, y luego voy a tener el campo de renderizado forma ese nombre, y esto se deforma la montura para él. Clase, uh, control de
formularios. Y luego voy a ver en medio, usuario, y voy a hacer cuando una copia y pegar esto. En realidad, puedo copiar y pegar la historia de raza html porque esos son los campos para un correo electrónico de nombre completo usando contraseña y confirmar. Y ah, bueno, llamaremos a esto crear look perfecto. Entonces creo que eso es todo. Um, Ahora, vamos a seguir y trabajar en las vistas reales para ver cómo se ve eso. De acuerdo, entonces ahora trabajemos en los puntos de vista, y no tenemos casi nada ahí. Um, Así que empecemos importando algunas de las cosas que vamos a necesitar de flash import render, uh, plantilla redireccionamiento flash para los mensajes flash y Europa para. Y también vamos a importar el bloque, formar la forma de configurar y desde el blawg matraz, vamos a importar el DP para las operaciones de DB. Vamos a necesitar crear un nuevo autor y finalmente bloquear modelos. Genial. Entonces ahora vamos a tratar al administrador. Entonces el administrador que va a vivir en slash admin. Y entonces lo que vamos a hacer es revisar cuántas cuadras? Um, ¿tenemos? Entonces hacemos una consulta blawg no cuentan, y aún no hemos visto conteo, pero básicamente podemos hacer conteo oscuro con cualquier consulta o cualquier filtro. Y va a reportar el número fuera de registros que
eso, um, que obtenemos tan sangre consulta cantidades igual que me dan un recuento de todos los blogs. Si ese blog es igual a cero, entonces significa que no se ha creado ningún bloque. Vamos a devolver el redireccionamiento para la chica para configurarla, y de lo contrario vamos a devolver la plantilla de render del registro. Agregar html medio. De acuerdo, hasta ahora, tan bien. Ahora vamos a hacer la montura, y aquí es donde se va a ir el formulario, así que slash Set up. Están configurados y vamos a tener el formulario va a ser el formulario de configurar, y vamos a devolver de render template off. Blawg configurar html con el para la masa. El contexto. De acuerdo, um, así podemos seguir adelante y probar eso. ver, obtenemos algo, y luego podemos seguir y haciendo lo real como el de sus operaciones a continuación. Entonces veamos si tenemos algún error. Parece que todo está bien. Entonces necesitamos ir a admin, ¿verdad? Y si Adminis trabajando? Ah, tan poco hecho Ah aquí no hemos creado las mesas para admin, y podemos comprobarlo rápidamente. Entonces si uso blawg, escúchame usó el Sí. Perdón. Entonces usa blogueado. Perfecto. Entonces ahora muéstrame las mesas y no tengo ninguna mesa. Entonces eso significa que necesitamos correr, um, eso crear todo tan control. Ver aquí y haremos pitón manejarme. ¿ Por qué concha? Entonces vamos a partir de Flask Blawg Import Devi y luego sabemos toe db session comment por
si acaso . Y así ahora somos pequeños db crear todo y vamos a comprobar eso, um mostrar tablas. Perfecto. Entonces tengo autor y Blawg una cosa que noté ahí. ¿ Recuerdas cómo te dije que necesitabas importar los modelos? Entonces eso es algo que siempre había asumido. ¿ Cuál es el caso? Pero parece secuela. alquimia es algo así, mirando de manera interesante a todos los modelos, y los está creando perfectamente bien. Entonces no hay necesidad de hacer esas importaciones que parece funcionar bastante bien. Entonces con eso, creo que podemos seguir adelante y luego ejecutar el servidor y al menos comprobar. Entonces lo que quiero, um, ver aquí es que si golpeo slash admin que comprueba cuántos bloques hay, Cuántos registros de sangre si es cero que nos devuelva al conjunto de bloques de html y eso debería, like, renderizar el formulario correctamente para crear el bloque. Entonces vamos a ver si eso funciona, así que slash admin Perfecto. Ah, tenemos un error en la plantilla misma en el bloque y. Entonces veamos aquí y bloqueemos también, me falta el contenido. Ver aquí esto se configura html. Sí, me falta el contenido. Entonces bloquea el contenido y di eso Déjame revisar. Me refiero a su tema l Oh, esto es para mensaje, no mensaje para mensaje. Y así se ve bien. Vamos a ver por tener algún error? No hay errores. De acuerdo, así que eso es que tendría mala otra vez. Y ahí tienes. Configurar. Funciona perfectamente bien. Mira, estoy recibiendo el nombre del bloque aquí y luego el usuario administrador. Y recuerda, no
somos como poner nada de esto de forma manual. Como dije, es automáticamente, um, subclase ing o simplemente reforma. Y es sólo insertar ese nombre en la otra forma. Entonces, um, eso está funcionando perfectamente bien cuando ponemos esto un poco más pequeño para que puedas ver
todo el asunto. Por lo que se ve bien. Entonces vamos ahora a hacer las operaciones de base de datos.
58. Base de datos de creación de blog: De acuerdo, entonces antes de que tipo de,
como,
enviemos ,
como, este formulario, queremos poder hacer la operación real de la base de datos. Entonces es que eso va a pasar aquí. Entonces vamos a hacer un formulario oscuro validar en enviar. Um, si eso funcionó, entonces lo primero que queremos hacer es que queremos crear un autor a partir de esos, um, esos registros de formulario. Entonces voy a hacer Y autor igual a autor y luego para él, nombre
completo. Entonces para que podamos acceder a los datos reales que se almacenan en ese campo, sí
formamos ese nombre de campo y luego datos de puntos. Entonces esta es en realidad la forma más tarde. Y si recuerdas, tenemos que pasar ese correo electrónico de nombre completo usando pasaporte humano. Y si se trata de un autor, así que forma punto nombre completo, formulario correo electrónico, formulario, nombre de
usuario. Ellos, uh, forman datos de contraseña, y luego simplemente vamos a pasar. Es cierto, porque esto es definitivamente va a ser el administrador para esto, um, entonces tenemos que hacer recordar, desde cuando estamos jugando con tu, um, tenemos que ver con Devi. Anuncio de sesión fuera de ese objeto. Y iban a hacer ah db session um Bueno,
así que antes de
comprometernos, queremos poder, um para comprobar si ese registro se crea correctamente. Porque recuerda cómo vamos a vincular el, um, el administrador a una entrevista de extranjeros. Un autor clave, i d. Entonces necesitamos pasar el i d fuera de ese registro aquí. Y en lugar de comprometernos esto, podríamos comprometernos, pero entonces habría algo así como, um no muy eficiente. Podemos hacer algo llamado rubor. Y este es un truco ordenado cuando la sesión db habitual al ras. ¿ Qué? Um ah, secuela Arkham va a hacer. Se va a intentar, dedo del pie imitar o simular que el registro está escrito, y es cuando realmente nos dan el I D. Pero realmente no va a ir a la base de datos para registrar esa transacción. Entonces no podemos,
como, como, sólo comprobar si esa transacción va a salir bien. Y si no, entonces podemos tirarlo de nuevo al a la forma. Entonces después de ese rubor, podemos hacer si autor yo d Así que recuerda cómo teníamos yo d cuando lo hacemos. Cuando lo hicimos, la sesión Devi se compromete. Aquí está lo mismo, pero en realidad no es escribirlo. Es solo que es como pasar por la paz de validación válida y comprobar que
hay una dama real. Entonces ahora vamos a hacer Si hay otro i d Entonces construyamos un objeto blawg, y eso sería sólo los datos del nombre del formulario, y luego el autor, yo d así que no sé suficiente forma aquí, pero básicamente esa autoridad que conseguimos de la sesión DB al ras. Um, así que ahora hacemos lo mismo aquí d ser Ah, ID de
sesión y vamos a añadir el registro y vamos a hacer otra sesión al ras y ver si todo se ve bien hasta eso hasta ese punto. Um, si hay algún error en este punto, um, entonces podemos hacer una sesión. Retroceder y retroceder significa que sabes qué? Esta transacción no va a ir. Bueno, solo,
como, como, deshacer todo esto y voy a decir sólo error al crear usuario en este punto. Um, ¿por qué? Porque si la autoridad no fue, um, no
fue creada, entonces caemos en este bloque. Entonces ahora voy a comprobar si autor I d y el log I d Entonces podemos seguir adelante y almacenar todo el asunto. ¿ Recuerdas cómo te dije que commit te permite, como, hacer varias cosas al mismo tiempo? Entonces esto es lo que se llama una transacción. Una transacción significa que necesitas un tipo atómico de estructura similar donde necesitas un autor y también un blawg. Y entonces esas dos cosas están vinculadas entre sí, y si algo falla, puedes retroceder todo el asunto. que puedas cuando a menudo te requieren hacer transacciones porque estás como, quieres asegurarte de que esta pieza del disco oh, o que rigurosa esté bien escrita y luego hacer otra cosa. Entonces vamos a tener otra aquí. Entonces si no conseguimos por alguna razón la autoridad y un blogger, yo d Eso significa que tuvimos una cena creando el bloque. Entonces vamos a retroceder aquí un oleaje, y vamos a decir error igual a error, creando blogged, y podría ser algo así como, hay hay siento que no está correctamente configurado o hay un problema conectado base de datos. En cualquier caso, nosotros no le decimos al usuario ni dejamos que el usuario piense que todo está bien. Entonces, ¿vamos a hacer flash? Um Ah, sangre creativa. Bueno, en realidad, quiero hacer esto. Si esto salió bien, ríe. Mira, creado. Y luego cuando hago un redireccionamiento devuelto Ah, euro para Ataman. Está bien. Y vamos a tener que,
um, um, básicamente pasar ese mensaje de error aquí. No obstante, necesitamos gustarnos, ah, inicializarlo como en blanco. Entonces vayamos al aire igual en blanco, porque la primera vez que corras esto, no
vamos a tener, um no vamos a tener ese error. Um, este contexto aéreo creó, Okay, eso se ve bien. Entonces error es igual a blanco, que nosotros la primera vez que no va a comprar plomo en. Alguien va a caer aquí. Va a renderizar el set la próxima vez que nos encontremos. Cuando se presenta se va a revisar al autor. Um, quiero decir, crear el objeto. Trató de agregarlo, enrasarlo para conseguir al autor I d. Si conseguimos al autor, yo d Entonces tratamos de hacer el blawg e intentarlo. Obtenemos el, um, el bloque i d. Y si hay algún error,
um, um, enviamos un cuerpo de espalda para su OK, entonces nos comprometemos con tienda que look creado y luego regresamos al to el euro para Attman. Así que eso es un montón de cosas, ya
sabes, puedes algo así como comprobar dos veces eso. Asegúrate de que si no entiendes algo, puedes rebobinar y volver a escuchar todo el asunto. Pero una vez que lo
haces, ya sabes, una o dos veces consigues que te la cuelgan. Entonces veamos si tenemos algún error. Se ve bien. Entonces sigamos adelante y tratemos de crear esto. Entonces vamos a recortar admin para configurar. Entonces digamos mi pitón blawg es el nombre. Y, um, vamos a comprobar si no ponemos si el nombre completo aquí si obtenemos un error Jorge at de Cyril Oddo Jorge Prueba de contraseña. Repetir. Por lo que debería obtener un error. Aquí, aguanta. Ahí tienes, Jorge de Terra, pruebas crear blogueado. No, no lo
soy. No tenía el Sí, me faltan los métodos aquí, Así que los métodos son iguales Ah, get y post. Genial. Entonces digamos que eso es parejo. Aquí no hay errores. Vuelve atrás. Todavía tengo la información ahí. Se trata de una lista de prueba y prueba crear blawg. Está bien, perfecto. Entonces Ahora está diciendo que se requiere este campo. Jorge Escobar prueba y texto. Veamos cómo funciona eso. Tenemos en el aire en admin, pero siento que es sólo algo que falta. Pero creo que las cosas de la base de datos fueron, um, continuaron correctamente. Entonces vamos a revisar en la base de datos. Entonces si lo hacemos seleccionamos estrella del autor ahí vas. Dice,
Ah, Ah, ya
sabes, tenemos nuestro nombre de Pascua pasado para todo está ahí seleccionar estrella de registro y mi
bloque pitón Perfecto. Entonces ver cómo tengo admin y esto es como un I. D. Esta es la clave extranjera. Entonces esto esto cuando tienes una clave externa, significa que estos registros necesitan existir Y, um y ese registro es básicamente un puntero. Y una vez que esté conectado, um, puedes básicamente hacer,
uh, uh, lo que se llama como se une. Por lo que básicamente puedes listar seleccionar estrella del bloque, ya
sabes, y mostrar aquí la información del administrador. El nombre completo contraseña. Me refiero a todo. Entonces revisaremos eso un poco más tarde. Tan malo que teníamos en el aire en el en el en la plantilla configurada o admin. Creo Es el mismo error que tuve en el set up. HTML. Entonces es a mirar aquí a Contin y ver si tenemos ese significado aquí. Sí. La sangre creó un poco. Ah, no el derecho ni de las cosas, pero ah, sí, esas son las medidas de flash. Si yo si recargo, ese último mensaje de mensaje va a desaparecer, y está comprobando que tenemos,
ah, ah, registro de
bloqueo. Por lo que todo se ve bien hasta ahora, Trabajo
impresionante.
59. Accede de autor: De acuerdo, entonces tenemos a nuestro administrador de sangre configurado. Ahora, quiero poder iniciar sesión remolcar el a la cuadra. Y la forma en que vamos a hacer eso es implementando una función de registro con una forma y tomando en la base de datos para lo torrencial. Entonces revisemos la base de datos. Um, por un segundo, um, para ver son, um nuestras que nuestras bases, um, y comprobar que las mesas están ahí. Entonces tenemos el blawg que una base ahí, vamos a usar Balog y luego mostrar mesas. Entonces tenemos a nuestro autor y blawg. Entonces si sí selecciono estrella del autor ahí está. Tengo un nombre de usuario y contraseña con la que puedo probar. Entonces, um, vamos,
uh, uh, en las instancias son nuestro entorno virtual. Por lo que estoy aquí en el espacio de trabajo cambio a matraz blawg y hacer un lo siento do fuente siendo activado. Perfecto. Entonces recuerda que necesitamos tener estos V M.
V um, los padres está al principio para que sepamos que estamos en el lugar seco, Así que empecemos a trabajar en configurar una función de registro ah, y por supuesto, lo vamos a hacer en los puntos de vista aquí. Ah, fuera del usuario. Y, um, vamos a tener ah, básicamente trabajar en esa función de carga ahí dentro. Entonces lo primero que vamos a hacer es crear un formulario P Y um registro, formulario de
registro. Perdón por forma, gente. ¿ Por qué? Entonces veamos cómo podemos hacer eso. Um, vamos, um, va a genial una nueva clase llamada forma de registro. Están en subclase formando ahí, y así vamos a tener básicamente el nombre de usuario y la contraseña. Entonces nombre de usuario es Stringfield de vamos a preguntar dedo bajo el nombre de usuario, y luego voy a, um que es campo requerido, y voy a poner la longitud para ser la misma. Preguntado el como el en la base de datos. Por lo que mínimo de cuatro máximo apagado 25. Um, y eso configurado para el nombre de uso y la contraseña. Todos vamos a tener una Vamos a tener una sensación de contraseña en este caso para que la gente no vea, um qué? A lo que estás entrando. Y también vamos a hacer que esto se requiera en, y la longitud es igual a la de arriba. Por lo que mínimo para máximo 80. Perfecto. Entonces eso es eso. Guardemos eso. Um, Y ahora vamos a tener el echemos un vistazo a los puntos de vista para que podamos. Bueno, antes que nada, hagamos la plantilla. Entonces vamos a crear uno nuevo aquí sobre autor. Um, pero se va a llamar logging html logging dot html. Y para ese, vamos a extender el HTML básico. Y, uh, pongamos un título que sirvió iniciar sesión, y luego vamos a tener algo de contenido ahí dentro. Entonces ahora vamos a un papel ah. Um, y vamos a tener una clase con ah, offset de tamaño
medio tres y una mediana de seis con columna. Y aquí vamos a tener el usuario del título que inicie sesión. Um, si tenemos un error, vamos a mostrar en el aire aquí y mostrar ese error en este rígido. Um, y luego voy a tener la forma real. Entonces recuerda, teníamos aquí los ayudantes de formulario. Entonces de los ayudantes de formulario, el html
No, está en la puntuación, um, importar, campo
render. Y, um así que vamos a hacer el formulario real abriendo aquí. Método es igual a post, y la acción es la,
um, um, Europa para el rollo de inicio de sesión es igual a cuatro. Por lo que ahora meto mi cabeza en Tak mis Sears llegan token, odio y etiqueta. Y ahora tengo mis dos campos. Entonces render campo para mí. Usar su nombre Último es igual a control de formulario. Y yo voy dedo del pie tener lo casi lo mismo aquí. Voy a copiar y enfrentar ese puesto de paso Steadied Password. Por último, tenemos un tipo de botón igual a submit y la clase para, um bootstrap default. Ah, antes y poner inicio de sesión aquí. Perfecto. Entonces he sido forma de lo que han cerrado. E incluso entonces, bloque
final. Enfriar. Entonces ese es nuestro, um, logging html. Y ahora necesitamos tener esto implementado en los puntos de vista del autor. Entonces vamos a hacer eso. De acuerdo, entonces aquí, vamos a necesitar agregar un formulario del autor, um, buscando tanto tiempo en forma ahí dentro. Um, entonces también vamos a necesitar ah, en el modelo de autor porque vamos a revisar desde el yo soy de la base de datos, el uso de ellos en pasaporte, y creo que eso es todo. Entonces vamos a usar sesiones. Por lo que una sesión para almacenar el nombre de usuario. Eso es que estaba bien encerrado. Entonces aquí, vamos a hacer, um, ruta
arriba, iniciar sesión y no tendrán algunos métodos. Entonces los métodos van a ser, um, conseguir y publicar, um, y luego iniciar sesión. Vamos a sacar eso y empecemos, um, montando cosas. Por lo que forma es igual a forma de registro. Y, um oh, y voy a decir que por ahora no hay ningún sitio. Y, um, tengo que tener la reforma, doc validar en el método de presentación. Y pero por ahora, sólo
voy a pasar como vamos a hacer algunas cosas más tarde. Sólo quiero comprobar que esto está funcionando,
um, um, lo contrario devolver la plantilla de render, y vamos a usar el autor Third Logging Extreme El, y vamos a pasar el formulario y el aire. De acuerdo, entonces comprobaremos si eso funciona, y luego haremos el tener una cosa. Entonces déjame comprobar si esto es no creo que esté funcionando porque acabo de empezar una
sesión fresca aquí en esta grabación. Entonces voy a hacer python, uh, administrar b y run server y debería tener mis cosas aquí. Entonces es a admin. Perfecto. Entonces está corriendo. Entonces ahora voy a hacer el registro y la base está indefinida. ¿ Qué? Su base. Uh, extiende html base. Consulta aquí en las plantillas. Extents base, html. Ah, necesito poner cotizaciones. Perdón, cotizaciones. Y, uh así que vamos a ver ahora. Impresionante. Por lo que tenemos nuestro usualmente nombre y contraseña. Si hacemos prueba de Jorge, no pasa nada. Pero es que está funcionando. Bien. Veamos la fuente solo para asegurarnos de que va al lugar correcto. Aquí está nuestra CSR, si ataque duro, y luego,
ah, ah, la forma va dedo del pie listón 11 lo cual es correcto. Entonces se ve bien. Um, así que ahora empecemos que baso operaciones en la vista. De acuerdo, entonces empecemos a hacer las operaciones de base de datos aquí. Y, um, así que lo primero que vamos a hacer es,
um,
buscar a um, un autor que tenga la contraseña mínima de uso que nosotros,
um,
tenemos um, en el formulario. Entonces la forma de hacerlo es que hacemos el siguiente autor igual a autor consulta oscura que filtro filtro por el cual es básicamente una consulta. A para hacer un selecto, um donde son ciertas condiciones. Entonces voy a hacer las condiciones ya utilizadas. Su nombre es igual a la forma utilizada. Sus datos de nombre, y la contraseña es los datos de contraseña de formulario. Y, um, voy a limitar eso para ser uno para que sólo tengamos uno. Entonces voy a comprobar si el autor cuenta. Significa que si no es cero justo entonces eso significa que hay un registro en la base de datos con el uso de ellos es igual a usarlo que estoy pasando el formulario y la contraseña que estoy pasando en el formulario. Entonces, um, entonces agrego sesiones casi una sesión, ¿no? Vamos a usar sesiones, y vamos a hacer sesión. Ah. ¿ Qué sesión? Espera un minuto. Lo siento. Sesión desactivada. Nombre de usuario, um, va a ser el formulario datos de nombre de usuario. Vamos a tener el nombre de usuario disponible en eso en esa sesión. Y, um, vamos a hacer redireccionamiento de retorno. Ah, eres un cuatro. Y es una, um fuera el éxito de la tala, que es otra, um, función que vamos a tener para cuando la gente inicie sesión, um, correctamente y creo que va a ser una cosa temporal. Creo que vamos a tener alguna otra funcionalidad aquí, pero lo verás en un rato. Por lo que sólo voy a enviarlos al éxito de la tala. Y, um y voy a poner aquí retorno, uh, suerte de
autor, entonces. Perfecto. Entonces, um, como Rerie revisando qué? Simplemente nos quedamos. Entonces si el formulario está validado, no
tenemos autor. Um ah. Grabación. Busca dónde coinciden el nombre de usuario y el pasaporte con esos formularios. Si la cuenta del autor es correcta, entonces mostrará el, um Bueno,
señor, señor, almacenará el uso de la decisión humana y luego regresará Redirigir a la, um, toe the logging función de éxito, que es sólo explicar, uh, autor conectado. Y esto debería ser el éxito de registro amante del éxito. Perfecto. Entonces, veamos si eso funciona. Entonces ahora esto no es hacer en realidad, como golpeó la base de datos. Um, debió haber habido un cerca de ahí sin embargo esa era la función era la misma. Pero ahora está bien. Tan baja ganancia. Entonces hagámoslo primero. Um, no revisé el formulario. Tenía los errores adecuados. Debería serlo. Entonces eso es un olvido poner el nombre de usuario. Obtengo este sentimiento requerido. Entonces eso es bueno. Si lo hago Jorge, digamos 123 que es el mal Ah, contraseña. Uh, yo consigo el campo. Debe ser entre 80 extranjeros. Entonces eso es un solo pongamos algunos Digamos Jorge,
Jorge, Jorge, ver qué pasa. Entonces sí, eso no está pasando. Y, um, así que ahora si hago la correcta, que es prueba de Jorge, entonces llego al éxito de registro y consigo que mi autor anote ahí, así que eso es crítico
60. Decorador de inicio que necesita: perfecto. Por lo que tenemos trabajando nuestra tala. Y ahora quiero mostrarles chicos, um, algo que es Ah, es un bastante importante, um, conocimiento o patrón. En realidad es ah, hasta
ahora patrón se llama el, um, un decorador. Y lo hemos visto antes con esto,
um, um, en lo de la ruta arriba, que es, um, te
dije que esto a la señal carne significaba que estaba, um, modificando la función que lo sigue. Por lo que en este caso, registro ha sido decorado, modo que la slash iniciar sesión con estos métodos caiga en esa función. Entonces es como un modificador si quieres verlo de esa manera. Y una de las cosas geniales con las que podemos hacer por teléfono es que podemos llegar a hacer nuestros propios decoradores, lo cual es bastante impresionante. Um, y pienso en tu sabes, cosas que quieres que una ruta potencial tenga algún tipo de ajuste de hallazgo bonito, y el que vamos a ver aquí. En realidad es muy común, que es que quiero asegurarme de que la gente esté encerrada antes de que accedan a esta ruta, y eso es exactamente lo que vamos a hacer. Vamos a tener o crear nuestro propio decorador llamado Logan Requerido y Logan requerido significa que yo sólo para poner un a signo largo y requerido frente a un off cualquier vista. Y, um, y básicamente comprueba si el usuario está conectado. Y si no, entonces pasa algo más. Y eso es una especie de manejado por el decorador. Entonces veamos cómo podemos hacer este decorador. Y en este caso, estoy pensando en hacer algo aquí en el, um en el admin, que es como si un, ya
sabes, poner un son cargando requeridos aquí en el en la ronda de administración. Entonces, ¿cómo se vería eso? Um, bueno, básicamente sería algo así como lo siguiente que tendría debajo del admin. Queremos tener primero la esa ruta porque queremos poder primero comprobar la función para esa ruta y luego tendría algo así como registro requerido. Ver, Así que eso es una especie de decorador que ahora estoy agregando que comprueba si la persona ya no
es amorosa, no puede
meterse en el en el anuncio mental y ah, para ser ah, para ser honesto, Creo que esto Verificando el blog me voy a mudar aquí, y lo voy a poner en el índice para que, um si le pegas como,
la página de inicio o la página de índice de tu blawg y no se haya creado sangre, entonces se algo así como te pone ahí, dedo del pie hacer la configuración en lugar de la admisión, Y básicamente, porque podrías estar golpeando al administrador y no tienes un blawg. Entonces si se adquiere Logan, ¿
dónde te registras para que te guste? No tiene mucho sentido. Entonces, um so, sí, vamos a hacer esto, Logan requería. Y vamos a ver cómo implementamos ese Logan requería decorador. Entonces sigamos adelante y creamos nuestro primer decorador. Y vamos a Va a ser un decorador de autor porque va a ser registro requerido para los autores. ¿ Verdad? Entonces vamos a un archivo aquí, y se van a llamar decoradores. Potencialmente podríamos tener más de uno. Por lo que queremos ponerlos todos en este expediente. Um, entonces este patrón, es como si hubiera un montón de cosas que vamos a ver aquí que podrían no tener mucho
sentido al comienzo del día. Entonces no te preocupes. Si no consigues todo el asunto, solo trata de sacarle lo fundamental. Um, así que primero tenemos que importar un de una biblioteca llamada herramientas funcionales. Vamos a importar esta función llamada envolturas, y en realidad es un decorador. Um, bastante
gracioso, um, y también vamos a importar de matraz, um ah, sesión porque queremos comprobar si el usuario está conectado solicitud correcta. Um, y vas a ver por qué en un minuto redirecciono porque queremos mandar a la gente dedo del pie de la página de inicio de sesión si no están encerrados y tu a cuatro para encontrar que la página de inicio de sesión. Por lo que vamos a definir el registro requerido. Y ese es el nombre del decorador. Y tenemos dos subclase lo de f, que es la, um, la función. Entonces vamos a tener esto es un envoltorio crítico si y luego vamos a definir esta función
decorada, que es Thea carnes y huesos reales de la misma. Um, y si se le pueden pasar argumentos y también se puede pasar clave fueron argumentos. Um, esto lo vas a ver a veces en tarta de teléfono. Y no creo que hayamos visto que este tipo de patrón me gusta aquí, pero básicamente esto son cargas en el son huevos, palabra clave ah, o parámetro todo el arte de los argumentos posicionales. Y en estos ke ke wrx cook key war arguments, todos los argumentos de palabra clave que se están pasando, um, y es este patrón se usa con bastante frecuencia, Así que deberías ser, um debe familiarizarse con ella. Entonces cuando un cheque si la sesión consigue, ah, nombre de
usuario, derecho, que es donde nosotros la sesión que ponemos. Cuando la gente inicia sesión, no
es ninguno. Eso significa que la persona no es amada en,
um, um, vamos a volver redireccionar a la maderera de cuatro euros. Y aquí hay algo que voy a añadir dedo esa función, porque lo que pasa es que se requiere este registro. A la carrera podría llamarse desde diversos lugares. Y estoy seguro de que lo has visto en sitios web. Cuando aterrizas en la página y te manda dedo del pie la página de inicio de sesión, Por lo general recuerda de qué página se envió. Y después de haber iniciado sesión con éxito su enviado de vuelta. Entonces eso para que, um, a esa página para que vamos a llamar a la siguiente página y la forma en que vamos a hacer esto es Vamos a ver la petición. Usted es l que es la petición. Um ah. El euro de la página donde estás golpeando que Logan requiere cebo. Voy a meterlo como una función. decir, Esdecir,es un parámetro para la función de registro, por lo que necesitamos cambiar la función de registro para eso. Entonces si no son amados, van a ser cento la página de inicio de sesión con este compañero de página siguiente. Y, um y eso es más o menos. Si están encerrados, entonces puedes seguir adelante y continuar. Entonces sólo vamos a pasar atrás. El argumento y la clave fueron argumentos que llamaron a la función en primer lugar Justicia. Lo tenemos. Um, y finalmente tenemos regresamos a Corea para funcionar aquí. Por lo que ahora podemos modificar las vistas aquí para el blawg. Y lo que vamos a hacer es que vamos a tener de autor decoradores importación registro requerido , y eso es todo. Um, así que ahora si intentas golpear al admin sin estar conectado, vas a ir y ser enviado de vuelta a la página de inicio de sesión. Pero antes de probar que queremos modificar, recuerda cómo teníamos que modificar la página de inicio de sesión de
eso, Puede lidiar con el siguiente argumento. Es bastante fácil. Entonces hagámoslo. Um, así que vamos a decir si, um y antes de eso, necesito importar solicitud aquí porque necesito ver la solicitud. Entonces vamos a decir si el método de solicitud es conseguir significado no es una publicación, y solicitar que nuestros huevos no se pongan a continuación está ah establecido en su lugar? Entonces voy a establecer una sesión. Voy a almacenar esto en una galleta que se llama a continuación, y voy a conseguir el, um, ese argumento al que me están pasando del decorador para esa sesión siguiente o siguiente . Y finalmente, lo que quiero hacer aquí es, um, si el conteo, si el otro viene, lo que significa que hay una persona válida Logan, entonces voy a comprobar si el próximo en sesión, Si tengo ah, una sesión llamada siguiente, entonces en lugar de enviarlos al éxito de registro voy a hacer, um, voy a enviarlos a la siguiente sesión ah, que es un euro que me están pasando. Entonces primero lo consigo, y eliminé session pop y finalmente vuelvo, redirecciono a lo que sea que a continuación estás en arrendamiento y luego aquí está otra Si no tengo un próximo , entonces solo los voy a mandar a log éxito. Um, y quieren el cambio final. Yo voy a hacer lo mismo aquí. Um, se requería
registro porque no deberíamos estar aterrizando en esto en esta página. Registro de éxito a menos que estés conectado. Correcto. Um, Y para eso, necesito importar, um, del autor. Decoradores, Decoradores, registro
de importación requieren. Perfecto. Entonces vamos a ver si tenemos algún error. Um, estamos saliendo al aire aquí. Ah, lo
tengo. No lo es. No devolvemos una la función. Um, con los partisanos, acabamos de devolver la función decorada. Um, por mi referencia, um, así que vamos a guardar eso y a ver si eso funciona ahora. Ah, ahí tienes. Entonces lo único que aún no tenemos una función de cierre de sesión o cierre de sesión, así que vamos a necesitar hacerlo manualmente y la forma en que lo hago, um, y probablemente vas a empezar a usar esto más a menudo es usar el, um, las herramientas de desarrollador. Entonces si vas a tu google chrome y puedes ver,
um, ya
sabes, ya
sabes, ver herramientas de desarrollador aquí mismo. Sé que eso está fuera de la ventana, pero nuestro puedes llamar, um, fuera comando. Yo Así que déjame poner esto. Ah, aquí, debajo. Y así básicamente ir al recurso es. Y si ves en las cookies, verás que tenemos la sesión, um, ahí dentro. Entonces necesitamos eliminar esa cookie para que aparezca como si estuviéramos mirando hacia fuera y
vamos a implementar el vigía después, Así que he borrado eso. Entonces ahora si recargo esta página, verás que ahora es me está llevando a la página de inicio de sesión con la siguiente, um tipo de, como, viable, lleno con el admin. Pero me gusta mucho, ah, como si fuéramos personajes. Y esto es como, todos
ustedes están incluidos, básicamente, para que el tippy de forex haga que en el euro, reemplaza el ya sabes, el slash de semi colon con el, um, con algunos caracteres decimales hexi. Pero en todo caso, se
ve que cómo funciona, no
puedo llegar a la herramienta de administración, um, por sí misma, sin estar conectado. Entonces ahora si entro aquí prueba Jorge, verás que ahora me envían de vuelta al anuncio mental, y me encantan,
um, um, lo cual es bastante guay. Y si vemos el,
um, um, el taburete desarrollador, vemos las galletas. Ya verás que tenemos nuestra sesión ahí dentro, así que eso está funcionando perfectamente bien. Um, lo mismo si nosotros ah, si miramos hacia fuera, tratemos de intentarlo Cerrar sesión por la galleta Linda. Y vamos a tratar de ir a nuestro éxito maderero, que es también fue decorado ahí. Lo mismo aquí. Ver, el siguiente el siguiente. Siempre estás lleno y no podemos llegar ahí. Pero si hacemos prueba de Jorge, entonces nos envían a la suerte y al éxito y la galleta configurada correctamente. Entonces eso es lo muy útil. Um, requiere
usar decoradores para Logan. Y, uh, ya
sabes, vamos a seguir mirando algunas otras cosas geniales a continuación
61. Introducción a las migraciones: perfecto. Entonces, um, antes de que me olvide y pase al siguiente el siguiente tema Ah, algo que quería dedo del pie adherir que no agregamos en la menos última lección waas el mensaje de
error. Entonces si voy aquí, quiero poder decir si el autor cuenta waas no cero. O sea, ¿qué no es más que CEO? Entonces era uno. Lo que quiero hacer es mostrar un mensaje de error en la plantilla. Entonces solo voy a poner esto como aire igual Incorrecto. Uh, usa su nombre y contraseña. Entonces y esto es típico. No quieres,
como, como, regalar demasiada información a los hackers. Um, eso, ya
sabes, son el nombre de usuario fue encontrado o no encontrado. Simplemente debes simplemente, como, arrojar consultas, nombre y contraseña para que no sepan exactamente dónde está el error. Y, um, y si es un usuario legítimo, saben que están cometieron un error. Entonces si voy aquí a la página de inicio de sesión, déjame intentar entrar un mal usando un pasaporte. Voy a usar de nuevo a Jorge Jorge. Yo lo sé. Entiendo esto. Ah, este mensaje de error ahí dentro. Entonces eso es bastante bueno. Entonces eso es todo. Ahora vamos a pasar a,
um, um, un tema muy importante llamado Migraciones y Migraciones es básicamente la,
um,
la um, forma en que manejamos, um, los cambios a
la base de datos. Entonces normalmente nunca sabes cuando estás desarrollando, como donde los campos que vas a necesitar para la base de datos y vas a tener que,
como, básicamente, básicamente, ¿
Vas a intentarlo? No lo eres. Seguro, vas a tener que hacer cambios. Base de datos. El problema es que una vez que estás desplegado y y estás ejecutando el código en diferentes máquinas, ¿cómo te gusta hacer un seguimiento de esos cambios? Bueno, podrías hacer como un archivo de texto y anotar o, ya
sabes, agregué una nueva columna para el usuario, y agregué un, um otro campo blawg etiquetas frías y cosas así. Entonces la forma en que te ocupas de eso, um ,
en ah, en una escala mucho más de tema de distancia en, como implementar algo que rastrea esos cambios para ti y en carne, tenemos un muy buen paquete llamado flats migrar. Y ahí es donde vamos a estar usando aquí. Entonces, empecemos con eso. Por lo que necesitamos sumar a nuestros requisitos. Txt Este nuevo paquete llamé un matraz migrar. Y por supuesto, eso te necesita para que la gente instale esto. Entonces vamos a hacer eso. Así que vamos a controlar, Ver, y asegurarnos de que, um, estás en la carpeta correcta y tienes el entorno virtual a la vuelta antes de hacer cualquier puesto de espionaje. Recuerda eso. Entonces déjame hacer maximizar esto y, um cuando se borre la pantalla y hacemos espiando estancar nuestros requisitos. Por lo que está revisando todos los archivos de requerimiento y luego finalmente un matraz instalado migrar perfecto. De acuerdo, vamos a manejar migrar a través del comando migrar. Por lo que necesitamos agregar eso a la e en ella b y fuera de la obligación. Entonces vamos aquí. Y lo que vamos a hacer es que vamos a añadir desde ah frasco el txt dot migrar migrante importacion . Y ahora voy a añadir una mi gran
sección um, aquí, y voy a tener un migrante óptico igual a la
función migrar, um, . Y pasé a ella el ap y el DB. Entonces ahora mi gran puede No, um, cuál es la aplicación y lo que la base de datos iss, um y Hay otro cambio que necesitamos hacer y manejarme. ¿ Por qué? Porque queremos poder. Como dije, corre desde ahí. Entonces lo que voy a hacer aquí es que necesito también importar, um, de matraz. Txt. Mi gran importación, mi gran mando. Y así, bajo gerente, voy a agregar este nuevo comando llamado, um, llamamos a la D B y luego migrar comentario y dejar todo lo demás igual. Entonces nos estamos subiendo a su aquí, gestionar. Ah, Gerente. Perdón, Gerente. Ahí lo tienes. Entonces ahora diremos que empecemos a hacer migraciones. De acuerdo, Entonces el caso de uso que vamos a tener aquí o la necesidad de migración inicialmente, va a ser el siguiente. Queremos ver las contraseñas de la tienda de sierra de forma más segura. Um, así que en su lugar, off Recuerda cómo tenemos aquí la prueba de contraseña ahí dentro como si en realidad lo pudieras ver . Y lo que pasa es cuando los hackers obtienen acceso a tu servidor de base
de datos, um aunque , claro, sabes que puedes protegerlos muy bien. Y como han visto los titulares, es ah, es algo así como esta tesis. hackers son muy, um, insistentes, y pasan por mucho de la clase ah fuera como ings seguros de servidor y firewalls y todo eso, y ellos pueden entrar en la base de datos. Entonces lo que queremos hacer es que queremos encriptar esta contraseña en el uso de algún tipo como patrón de
encriptación para que tú aunque esos hackers sí tengan acceso a tu base de datos, no puede simplemente ver el pasaporte en su gusto, llano texto, este texto plano dorado como en realidad se puede leer en la base de datos. En cambio, queremos usar algún tipo de encriptación como para que si el hacker no tenga acceso a tu sal de encriptación, que es como la cadena aleatoria que usamos para cifrarla, puede ser difícil para ellos revisarlo o descodificarlo. Entonces vamos a zoológico eso para eso. Vamos a necesitar,
um, um, básicamente claro que las tablas, porque a partir de este punto,
el sistema migrar va a cuidar, como crear y ah, inicializar las tablas . Entonces para eso, vamos a usar la,
um, um, la cáscara de pitón y usamos este elusivo de secuela um, Siegel Alchemy. Entonces veamos cómo hacemos eso. Entonces Vamos adelante y llamemos al,
uh, uh, shell por teléfono gestionado B y shell. Y vamos a partir de matraz glug import DB, que es el gestor de base de datos, y vamos a emitir la caída de la bola DB. Y ten cuidado con esto. Esto, como, realmente borra todas las mesas para siempre. Aquí no hay indebida, pero queremos hacerlo, así que vamos a seguir adelante y hacerlo. Entonces ahora si entro aquí en mesas de show, no
tengo tablas sobre las ideas que a partir de este punto el migrante va a poder manejar esto. Entonces salgamos. Y, um Entonces ahora ¿cómo hacemos el proceso migratorio? Bueno, la primera vez que lo ejecutas después de haber dejado caer tus mesas y ojalá lo hagas la próxima vez desde el principio, um, tema. Hacer el siguiente python administrar ser por qué, ah db en él. Entonces en ella es un comando de ellos migran. Um ah, algo así como un conjunto de herramientas total que te permite, um en una carpeta Migrations a tu aplicación. Y a partir de ese momento, cualquier cambio será rastreado desde esa carpeta. Entonces veamos qué pasa aquí. Perfecto Así que ahora si revisas aquí, verás que hay algunas migraciones. Ah, carpeta. Es una carpeta nueva. Y esa carpeta va a ser tu puedes facturar a través,
conseguir así que en realidad te recomiendo revisar a través de get Porque entonces básicamente puedes ver los cambios a lo largo del tiempo fuera de tu base de datos. Y aquí está diciendo que un cheque olímpico yo y yo antes de proceder. Entonces voy a revisar eso, y es básicamente, um, una lista fuera tipo de ajustes como. Um, por lo general esos son Esos son buenos. Um, Y así aquí, vamos a tratar de ahora, luego hacer el tipo inicial de como una instantánea. Entonces la forma en que haces eso está en esto siempre es donde lo haces cada vez que cambia a un ritmo . ¿ Tu primero me maneja python? Por qué, bebé migra. Y luego sí administras python Maestri. Por qué db uh, arriba Genial. Entonces mi grande y operar, esos dos son los comentarios. Entonces sigamos el 1er 1 por truenos manejarme. Por qué db mi gran Y eso va a crear unos segundos aquí, un archivo con una especie de como un hash y que hashes como el desvío. Entonces veamos aquí. Y como puedes ver aquí, verás que es algo así como una revisión de lo que sucede cuando, Ah, cuando esto. Este este primer ah tipo de archivos donde fueron creados Así verás que
aquí hay dos secciones . Permítanme poner esa actualización más grande, que significa cuál es el camino hacia adelante y hacia abajo, que es ¿Cuál es el camino detrás? Porque también puedes hacer manejo de bisontes. ¿ Por qué la baja de DB y qué pasará? Es todo. Cambiará la base de datos al estado anterior. Entonces es algo bastante poderoso. Entonces pero para todos geniales, verás que básicamente es decir para la próxima sesión. Basta con crear el autor de la tabla con el i. D. Nombre
completo en el rompecabezas y ver que es mantener todas las cosas que teníamos en nuestro modelo, con la primaria constreñida y la restricción única. Todo eso y luego también va a crear la tabla de bloques. Entonces eso es bastante bonito, bastante cool cosas. Um, y ahora, uh, ¿
qué está pasando aquí? ¿ Tenemos esos establos aquí? A ver. No, sólo
tenemos un persa olímpico. Eso es muy interesante. Y lo que hace esa versión olímpica. ¿ Es tipo de pistas en esto en el elevate en sí? Ah, qué es lo que es la versión actual y cuáles son las diversiones antes, Uh, creo que es sólo una versión coreana. Um, puede
que me equivoque, pero creo que es sólo una versión coreana para que almacene en algún lugar. No en el sistema de archivos. Cuál es la versión actual para que pueda realizar un seguimiento y buscar en el
sistema de archivos a través de estas versiones. ¿ En qué está el anterior? ¿ Cuál es el siguiente? Um, cosas
tan bonitas. Pero como puedes ver, no ha creado la tabla. Mierda. Entonces, ¿cómo los creamos con una pitón? Manejarme? ¿ Por qué? ¿ Actualización de DB? Y recuerda, siempre son estas dos cosas. Mi grandioso es, tú haces el cambio de remodelos. Um, ya
estás listo para irte. Tú sí migran para que él genere esto. Esta versión, este archivo. Una vez ese archivo, lo revisas. Se ve bien. Um, entonces lo haces por minutos telefónicos. Queremos ser un gran y ahí es cuando suceden los cambios reales de la base de datos. Entonces hagámoslo. Perfecto. Por lo que dice que ejecutó la actualización. No pasó nada Pero ahora, si vemos a ver cómo se ve una persona de Limerick. Sí, son tres B C C C C. Es el mismo archivo aquí. Entonces esa es la versión actual en Si muestro las tablas, verás que ahora tenemos autor y blogger, así como
lo habríamos creado a través de db crear todas cosas tan bonitas. Y, um, vamos a ser, ah, algo así como trabajar con esto para crear este tipo de contraseñas más seguras para nuestras para nuestros usuarios.
62. Contraseña más segura: bien para nuestra encriptación. Vamos a usar un paquete, um, llamado por cripta B. Y así vamos a agregar esto al, um Así que su requisito txt guarde ese archivo. Y aquí, vamos a pitón. Um, no por teléfono. Perdón, Pip. Instalar nuestros requisitos. Txt. Entonces ahora se está instalando gente. Descifrar tubería. Tan perfecto. Entonces ahora veamos cómo necesitamos cambiar los,
um,
los modelos y, um y luego también el proceso de registro en la o la sangre configurada para,
um, um, para que esto sea más seguro. Entonces lo primero que vamos a dos maneras vamos a ir a las vistas de Blawg y vamos a ver cómo hacemos esto. Um, vamos a importar por cripta. Aquí, se cripta. Perdón sea cripta. Y, um, así que bajo configuración, Lo que queremos hacer es que vamos a tener que hacer lo siguiente primero necesitamos para generar asalto, y ,
um, esa sal es como un aleatorio, um, algo así como hash que se utiliza para generar la nueva la nueva contraseña. Y vamos a almacenar la contraseña hash nosotros la gran cripta Hash. Peter B, que es una función que creamos, tiene fuera los datos de contraseña que recibimos del del formulario y nosotros incluimos con esa
sal que acabamos de generar. Um, así que ahora, en lugar de los datos del pasaporte extranjero, vamos a almacenar esta contraseña hash. Perfecto. Um, lo único es, como, um, queremos cambiar el, um queremos cambiar el ah,
la longitud de contraseña para el para los usuarios porque siempre genera un carácter de 60 contraseña. Entonces sigamos adelante y hagamos eso. Vamos a ir a las modelos de autor, y voy a hacer P D B columna TV ah, la cuerda. Y en cambio, 80
vamos a hacer 60. Sé que esto no es un cambio enorme. Yo sólo quiero que les guste quitarse el ritmo del dedo del pie. Um, algo así como cómo cambiar las cosas en la base de datos y luego hacer las inmigraciones. A pesar de que voy a decir, um, si tienes unos 20 caracteres extra ahí en el largo plazo, estarías usando mucho más almacenamiento, así que eso definitivamente es algo que hay que vigilar. Pero antes de hacer la migración, hay algo que como que me gusta facturado en línea, y parece que es Es un error dentro? Um um, la biblioteca Migrar. A pesar de que la gente dice que podría ser que el autor quisiera asegurarse de que la gente quisiera hacer esto encarnar, En todo caso, um, tienes que ir a tu archivo, um e M v p Y y hacer el siguiente cambio en donde dice contexto. Veamos contexto configurar aquí mismo. Um
, dice conexión. Se conectará. Objetivo hecho de datos. Hay uno que necesitamos agregar, que se compara tipo tripe comparado igual a verdad. Y la razón de eso es que si no agregas esto, um, esta configuración en el E M v b y cambia a las columnas mismas, como un cambio de tipo o un cambio de longitud como hicimos en el on the author modelos aquí
no son van a ser recogidos. Entonces eso es algo que me gustaría No todo e Quiero decir, no
me gustaría tener eso todo el tiempo. Entonces, um, asegúrate de que hagas ese cambio en tu ah, te vas a migraciones E M V P. Y. Y alrededor de la Línea 75 verás una figura com de punto de contexto en este Tipo comparado igual a verdadero Pero en todo caso, eso debe quitarse el de la comprobación para el cambio de lente. Entonces ahora, um, sigamos adelante y hagamos la migración. Entonces, um, está aquí. Entonces por algunos, manejarme ¿Por qué? Db um migrar y ver qué pasa. Perfecto. Entonces ahora tenemos un nuevo y tú archivas y creo que es el, um el que tiene un d a v e n y veamos cómo se ve eso. Entonces ahora está diciendo que el, um que la contraseña ahora va a ser 60 en lugar de ayuda fuera. Y, um, esto es algo que también noto que parece un bicho. Está comprobando, es
decir,
autor es que necesita cambiar de lingotes a minúsculo y no estoy seguro de por qué, porque no cambiamos. El campo es autor. Siempre ha sido un lingote. Entonces eso es algo que, um, quiero decir, es no, no, no
es un gran ah, un gran problema. Um, pero, um y parece que si miras, rebajan de categoría, dice
que cambia de minúsculo y me refiero a lingotes dos diminutos. Y así es básicamente decir que la existencia, la diabetes un diminuto ella y se va a ir del dedo del pie lingotes. No estoy seguro um, puedo dejarlo. Ah dice, ah cuerpo para ti. Es decir, eres más que bienvenido para editar este archivo, Pero en todo caso, tenemos nuestra migración. Um, versión. Todo se ve bien. Hagamos el migrar. Entonces por algunos me manejan. Por qué, db uh, actualizar. Y eso debería cambiar la base de datos. Perfecto. Um, así que como no tenemos nada aquí, eso, um no vamos a ver ningún cambio, pero, um, pero se parece a todo. Está funcionando. Bien. Entonces Así que esto es bueno. Entonces probemos esto. Uhm, voy a hacer que Python me administre. ¿ Por qué? Ejecutar servidor Y deberíamos tener nuestro servidor en funcionamiento. Entonces ahora si voy a la vamos a decirle esta cookie para que estemos bloqueados y vayamos a la página principal, deberíamos ser redirigidos a configurar. Y sin embargo eso funcionó bastante bien. Um, así que vamos a crear nuestro nombre blawg. Voy a llamarlo mi por un poco de sangre. Entonces mi nombre completo, correo electrónico, nombre de
usuario y contraseña va a ser, uh, Jorge para que se mantenga sencillo. Ah, y luego voy a hacer crear sangre. Y ahora me están enviando a la página de inicio de sesión porque no estoy conectado, cual tiene sentido. Pero quiero ver si un todo esto como, um, configurar cosas como con la contraseña hash funcionó. Entonces vayamos aquí a nuestra secuela. Y por si, um, te estás poniendo al día. No tienes esto abierto que yo salida de aquí. Haces mi secuela. Um, CTL, um y luego ver una mentira. Entonces usa blawg. Lo sentimos, usa Balog y luego muestra tablas para ver qué mesas tenemos. Ahí hay autor por lo que ahora debemos hacer seleccionar estrella de autor y perfecta. Ves, ahora tengo el pasaporte no es, ya
sabes,
Jorge, Jorge, que es lo que entré. Pero en realidad es como esto muy largo, raro un hash, que lo hace mucho más seguro. Entonces déjame poner esto más grande. Entonces eso es eso eso es mucho mejor. Y si me dejo revisar el bloque para ver si fue creado correctamente y sin embargo mi bloque python, eso es lo que entré. Entonces eso está funcionando perfectamente bien. Hay una cosa más que tenemos que hacer antes. Ah, y en esta Ah, esta lección y esa es que no tenemos los cheques para que la página de inicio de sesión use ser cripta. Entonces cambiemos eso. Para que así lo haga. Entonces aquí, um voy a ir a la parte superior e importar descifrar, y luego en el voy a hacer el siguiente cambio. No voy a filtrar por contraseña porque la contraseña que ingresa el usuario no va a ser la misma que se almacena en la base de datos, porque eso es cifrar. Entonces lo que estoy haciendo aquí es que voy a crear en una consulta que me dé autores que tienen el nombre de
usuario, um, el mismo. Y luego voy a comprobar si hay cuenta. Es decir, hay un usuario que tiene ese nombre de usuario. Entonces quiero hacer el cheque para el pasaporte. Entonces aquí va a hacer si los autores cuentan es cierto, hay más de lo que hay más de cero. Entonces voy a decir que el autor es el 1er 1 fuera de esos autores fuera de cero porque esto devuelve nuestra lista de autores, aunque sea sólo una. Y luego voy a hacer lo siguiente que necesito hacer, um este look de espera, se
sangrará. Por lo que seleccionó todo lo que impresionó. Tab on. Entonces voy a lo siguiente a lo que fui. Está bien, um, voy a hacer si se cripta. Pensé que Josh pw fuera de los datos del pasaporte, Um, y luego también contraseña, que es la contraseña que estoy recibiendo, que es ese hash raro que tiene que ser lo mismo que la contraseña del autor. Y hay como, No
tienes que entender todo esto, pero es como la forma en que compruebas que es el mismo pasaporte. Pasas la contraseña que obtuviste del formulario en un encriptado usando la sal off, el off la contraseña, um, que tienes en el en la base de datos. Y si eso devuelve el mismo hash, le preguntó a ese pasaporte autor entonces eso significa que es la misma la misma contraseña, por lo que es un poco complicado, pero así funciona en, y te acostumbrarás a eso patrón. Entonces, um, si ese es el caso, entonces la sesión es el nombre, le dijo al nombre de usuario. Si hay un siguiente, entonces consigue el siguiente de la sesión. El pequeño galleta y luego regresó Reducto. A continuación, todos los sabios volvieron al éxito maderero, que es el otro que luce que te aterriza. Si el registro es correcto, Um, si eso no funcionó, todo lo más antiguo, como la contraseña West incorrecta o no había otro conteo. Sólo voy a decir que hay una consulta de error relativa a una contraseña. Um, eso es todo. Entonces, um, entonces, en realidad, este si lo
hará, um , continuará aquí, y no ejecutará su otra cosa. Entonces probablemente necesito hacer y otra otra idéntica dentro. Este es el solar es correcto. Um, ves a White. ¿ Por qué es eso? Porque si la contraseña es incorrecta Pero se encontró un usuario con ese nombre de usuario, entonces hace esto más, pero de lo contrario simplemente se cae aquí sin que se establezca Arab. Entonces intentemos eso y veamos si eso funciona. Entonces veamos si tengo algún error. Um, se ve bien. Entonces déjame intentar iniciar sesión, así que voy a tocar el tala equivocado Jorge. 12345 Dice en Corea, uso y contraseña. Ves, eso es perfecto. Um, eso significa que el había un cheque en la base de datos y eso no funcionó. Entonces voy a hacer Jorge Jorge, que es el correcto. Y sí, tenemos el dedo del pie. El administrador, um, dice que Blue creó. Este es un mensaje flash del bloque. ¿ En serio? Eso lo hicimos antes porque realmente nunca había aterrizado aquí. Pero eso se ve bien. Y todo está funcionando perfectamente bien. Cuanto menos cambiemos yo quería está en el en la plantilla. Quiero tener,
um, um, una función más larga. Entonces déjame ir al admin, y voy a añadir lo siguiente su um, así que es, um solo un párrafo eran ahora algo rápido. Bienvenida. Um, y luego voy a imprimir sesión. Um, puedes hacerlo punto Usa su nombre, o puedes hacer, um, así. Es lo mismo, pero me gusta me gusta el perro. Um, me gusta una especie de notación como aquí, y luego voy a hacer una h ref igual a tu l para, uh, cerrar sesión y voy a implementar una función más larga porque no quiero continuar, um, diciendo las cookies de forma manual. Entonces? Entonces veamos esa conexión. Entonces si refresco aquí, aún no
tengo una función más larga, así que vamos a dar, um, vistas de
autor. Y entonces eso es para, um, cerrar sesión tan arriba. Ah, ruta slash Cerrar sesión y me voy a enterar Mira, nosotros el, um, sesión pop off nombre de usuario y yo sólo regresaré. Redirigir dos euro por índice. De acuerdo, veamos que funcionó. Um, así que vamos al administrador. Perfecto. Daremos la bienvenida a su hit. ¡ Cuidado, Cuidado! Impresionante. Si voy a, digamos admin, me piden que inicie sesión. Yo sí, Jorge, Jorge y yo estoy mirando de nuevo. Entonces muchas cosas que cubrimos, Tenemos una contraseña más segura. tala funcionó, y Low God también funciona ahora, así que estamos listos para pasar a la siguiente lección.
63. Comprobar is_author: bien cuando quería escuchar su ahora es básicamente estoy revisando. Si el si el autor es, um ah, que podría llamarlo el autor existe. Y luego los enviaría de vuelta a la página de administración. Um, pero sin embargo, quiero revisar el, um, el autor oriente. Entonces recuerda, tenemos esta bandera de autor este en el, um en el modelo en USAir en el modelo autor básicamente come. Autor es uno. Aquí la idea fue que algunas personas que la están criadas sólo pueden comentar, y sólo la que son autores. Yo o los que pueden crear posts deberían tener. Este es el autor tipo de encendido. Entonces, um, si su autor es syrah o falso, entonces eso significa que no pueden ir al cajero automático, y pueden hacerlo Pueden comentar. Tienes que registrarte para poder comentar, pero no puedes crear publicaciones en bloque. Entonces quiero empezar, como, trabajar un poco hacia eso. Um, lo otro que quiero hacer es esto,
um, um, en el blogueado. Cuando consigo los usuarios,
quiero, uh,
hacer uh, que eso sea un poco mejor en lugar de tener esa lista de usuarios? Um, que es Ah, me refería en la función de registro está llegando estos autores Y entonces si los autores cuentan autores cero, Eso se ve un poco raro. Entonces déjame re factorizar eso y hacer que sea un poco mejor. Entonces aquí, voy a conseguir el primer autor haciendo el siguiente autor igual a autor, consulta filtro por,
um, um, usa el nombre es los datos de nombre y luego solo, um, cambia a primero. Y primero es un comando que está disponible en la consulta. Uh, objeto. Entonces él sólo devuelve el primer autor, y luego yo sólo voy a decir, si autor entonces hacer la siguiente temporada, se ve que se ve mucho mejor. Como si fuera ah, lo estamos No estamos contando. Y luego haciendo los autores fuera de cero, se ve mucho mejor. Um, Y luego trato. La cosa es sesión. Y cuando quiera quiero empezar. Quiero empezar a almacenar en una sesión. El Oriente bandera de autor. Está bien. Y este es el autor estos autores. Entonces si esa bandera, si ese valor del modelo es falso, entonces voy a almacenar caídas para sesión es autor. Y si es verdad, entonces voy a almacenar True. Entonces ahora lo que quiero hacer es,
um, um, revisar por ese único administrador blawg. Y la forma en que voy a hacer eso es la siguiente. Um, necesito agregar, um, sesión aquí y a bordo. Básicamente es como una,
um, um, una utilidad para poder regresar como devoluciones http no normales. Y podemos devolver algo así como cuatro o tres, que está ahí para haber código por no autorizado. Entonces veremos cómo implementamos eso. Um, así que aquí, voy a hacer en el índice. Um, no, en realidad, en el admin. Justo en el admin que voy a revisar, Um, si el perro de sesión consigue él es autor, entonces sí devuelve el admin HTML De lo contrario, regresa on abort off cuatro o tres. Entonces vamos a comprobar eso. Entonces voy a mirar hacia fuera y luego voy a volver a iniciar sesión. Voy a tratar de ir al admin, y luego quiero hacer Jorge Jorge Logan. Entonces aún así eso funciona. Ah, eso significa que revisó a mi autor del este, um, señalando aquí. Y, um, y para que sea verdad. Entonces soy capaz de acceder al, um, el ad mental, Pero entonces ¿cómo hacemos pruebas para, como, si si otro está registrado, pero no hay bandera de autor. Um, podríamos usar la función de registro que escribimos antes. Um, pero, um, eso básicamente establece. Yo creo que el autor es verdadero, um, automáticamente. Um, así que eso está aquí, justo en modelos. Entonces Oh, así dijo su autoridad que cae por la culpa. Además, supongo que es Es lo hace funcionaría. Um, si utilizamos el registro. Ah, pero no estamos haciendo Sí, no
estamos haciendo nada con la modelo aquí, así que sí. Entonces lo que queremos hacer es que quiero armar temporalmente mi, um mi hielo de mi admin. No yo. Mi oriente autor bandera a falso. Y comprueba que eso no funcione y consigue los cuatro o tres. Entonces voy a hacer eso a través de la concha. Entonces voy a pasar por gestionarme. ¿ Por qué concha? Y luego voy a decir de autor modelos importar oferta, y luego tenemos al autor igual a autor que, um ver, uh, consulta no filtrar por, y quiero usar, uh, usar su nombre es igual a Jorge primero. Es cuando tengo autor. Ahí está. Entonces si reviso autor es autor aquí, veré que es verdad, ¿
verdad? Entonces lo que necesito hacer es hacer que eso sea falso. Entonces cae el autor Oriente, y luego necesito comprometerlo. Entonces solo necesito hacer, um, el ser extraño autor. Bueno, necesito importar de última importación glogg BB. Entonces no creo que tenga que hacer. No necesitas hacer anuncio de TV. Solo necesito que db session commit para que se almacenen los cambios. Entonces venga. Y si reviso ahora al autor, sí, veo que ahora es cero. Vio tres Siria. Entonces vamos a tratar de mirar hacia fuera y voy a tratar con el dedo hacia arriba. Necesito estar ejecutando la aplicación. Aguanta. Así python servidor de sala administrada Perfecto. Déjame intentar salir, Los hombres cuidan y voy a hacer Jorge Jorge, que es la contraseña correcta, y se les prohíbe. Perfecto. Entonces eso es comprobar que el autor Oriente Ah, bandera es falsa. Entonces eso no es que no vaya a volar. Es No estás autorizado para ir al admin en en Blood Post. Pero eres tú podría potencialmente hacer comentarios en las publicaciones. Entonces déjame cambiar eso realmente rápido para que tengamos de nuevo esa funcionalidad. Por lo que de matraz Log Import, Phoebe y luego de modelos de autor importan oferta. Y déjame ver si tengo eso aquí. Por lo que autor es igual a nuestra esa consulta. No primero. Eso me da el primer autor. Entonces esa es otra forma de hacerlo. Y luego voy a hacer autor, el autor Este es igual a verdadero. Y luego Devi cometa sesión. Entonces ahora déjame comprobar si tengo esa bandera encendida Perfecta. Y voy a ir al administrador. Necesito equivocarme la solicitud, y voy a ir a mirar a Jorge, Jorge. Y me alegra volver a apoyar. Entonces eso funciona. Perfecto. Si yo
64. El modelo de publicación y la categoría: perfecto. Entonces empecemos. Ah, trabajando en una funcionalidad de poste de bloque. Um, porque esto es una cuadra, y realmente no hemos hecho nada realmente? Dedo del pie. Ah, postes de
sangre, que es ,
como, lo,
como,
central que quieres lograr aquí. Pero ya sabe, usted, señor, las cosas del tipo de
identidad siempre llevan mucho tiempo. Y, um pero aquí estamos. Estamos listos para empezar a crear esa funcionalidad de post block. Entonces lo primero que vamos a hacer es crear un post y una categoría en el archivo de
modelos de bloque . Entonces, empecemos a hacer eso. Entonces creamos una nueva clase llamada Post, que es una instancia, fuera del tee me clase moral. Y así vamos a tener un I D. Que es un interno. Seguro. La clave primaria es igual a true. Esta es nuestra primaria, uh, yo me sentiría. Entonces vamos a tener un blawg i d. Entonces queremos tener una relación dentro del blawg y el Post. Entonces para eso, vamos a hacer una llave extranjera al igual que lo hicimos antes con la sangre y el autor. Y eso va a ser cualquier maestro. Y es una clave de piso para el blawg I d A continuación, tenemos al autor, i d y eso también es una llave extranjera. Entonces eso significa que vamos a tener que, um, por aquí. Va a ser otra columna DB. Ah, es un entero también. Y en este caso, la clave extranjera es la idea del autor. Um, ahora tenemos título y título va a ser una cuerda de 80 médicos y tenemos su cuerpo, y eso va a ser,
um, um, un texto televisivo. No hemos visto antes este tipo de texto sobre Texas. Algo así como es un gran nuestro chunk off off personajes y Texas perfecto para el
cuerpo de sangre . Um, vamos a tener algo llamado babosa. El baboso en, um, en términos de Internet, él es básicamente todo el, um, tipo de identificador para el para la chica Fuera de ese artículo y se puede ver vamos a ver, debilitar, Ver una babosa. En este caso, la babosa sería de 20 fueron slash blawg y en slash 2015 10 20 secuela Alquimia. Todo lo que es una babosa. Por lo que las consignas básicamente conlleva tener el título fuera. El del artículo hecho algo así como todos sois compatibles para ver cómo los guiones están reemplazando los espacios de aquí, y todo es mayúsculas inferiores. Entonces, en realidad hay una biblioteca que nos permite hacer esto, y vamos a echar un vistazo a eso. Pero por ahora, uh, es sólo la columna A TV. Ah, fuera de cuerda 256. Y vamos a hacer esto, um que sea único porque no hay dos encuestas de bloques diferentes que deban decir mural que tenga sentido, Vamos a hacer un estado publicado. Um, así que no sé cuándo se publicó eso y para eso, vamos a usar otro tipo que tenemos una noticia que es diurna, y me dicen que es solo una columna de mi secuela o no un México, sino un, uh base de datos lo llamó que eso almacena, información de
fecha y hora. Y por último, vamos a tener una bandera de vida. Siempre uso esto,
um, um, cuando es algo así como relacionado con el contenido, porque normalmente no se eliminan,
um, um, registros de la base de datos. No es una buena práctica eliminar cosas porque las relaciones duran bajo su historia. Entonces si quieres tener un post el liderarlo en lugar de realmente el liderarlo desde la base de datos, vamos a simplemente establecer la falla del dedo del pie de la columna de vida. Y eso debería, como, filtrar cualquier, um, alguna columna? ¿ Algún post que no queremos ver? Entonces, um, también
vamos a tener una categoría, así que es su post puede tener una especie de, como una categoría blawg. Y, um, así que vamos a tener eso. Entonces esa es una columna que es un entero DB. Y vamos a hacer de eso una clave externa de otra mesa que aún no hemos creado. Bueno, pongámoslo aquí categoría que yo sea, um Y, um, definamos el en él para esto. Um, entonces vamos a tener título de autor blawg, categoría de
cuerpo. Todos esos son requeridos. Y entonces vamos a tener,
um, um, ninguna babosa requerida estado publicado y vivir la vida. Siempre va a ser verdad. Entonces aquí tenemos auto blawg I d igual a blawg. Yo d. Y nota cómo estoy pasando el blawg. Pensé que estaba ahí porque en realidad voy a haber pasado el verdadero, um, objeto
sanguíneo, no el i d. Um, que es una diferencia sutil. Como si hiciera blawg um blogger d así, entonces simplemente pasaría bloque i d porque estoy esperando a dedo pasar el número, el número de ese bloque. Pero no deberíamos como hacer eso, porque el sangriento puede cambiar. Y no queremos estar,
como, como, codificando
duro o mirando hacia arriba que yo d Así que en cambio, estoy esperando que esto se pase el blogger y el autor como objetos. Y estoy averiguando aquí cuál es la idea. Lo mismo con el autor yo d Así es, um, autor pensó que d Porque voy a pasar el objeto ahí. Iban a tener el título. Um, vamos a tener el cuerpo y este tronco. Y por último, si se dice estado publicado a ninguno
, como. No voy a pasar uno. Entonces solo voy a estampar el tiempo con lo que tenemos, ¿cuál es la hora ahora mismo? Entonces la forma en que hacemos eso, IHS, vamos a usar durante el día que UTC Ahora recuerda mi conversación sobre que el tiempo siempre usando la, um, la zona horaria UTC o Greenidge para que todo sea algo así como universal. Entonces eso es siempre una buena práctica. Um, y por lo demás sólo establece el dedo del pie del estado polaco. Lo que sea. Se me pasó en mi barómetro en él y finalmente, auto vivir igual a vida, lo cual es cierto por la culpa. Tengo un error aquí. Sintaxis no válida. Ah. Ah, necesito un semi colon. Y en la parte superior, necesito importar, um, desde el momento importar el bien. Por el momento, tan bueno. Um, lo último que queremos hacer es encontrar el,
uh, uh, el modelo de representación. Ah, método. Y yo sólo voy a regresar. Uh, post por ciento están con el título. Enfriar. Por el momento, tan bueno. Um, ahora quiero hacer la categoría. Y para eso, también
voy a hacer esto s ah, es una instancia de modelo DB, y voy a tener, uh Bueno, la idea es la misma que esta. Voy a copiar y pegar esto y el nombre. Va a ser lo mismo nosotros el título aquí. Uh, pero quiero que sea 50 en lugar de 80. Y así para el en él, voy a sí mismo principal. Y voy a poner el nombre para que sea ese nombre. Y la representación es categoría de retorno por ciento son auto Dale. Ah, sí mismo hizo bien. Está bien. Perfecto. Entonces eso estaba mucho fuera de modelar ahí. Pero tenemos nuestro puesto y tenemos nuestra categoría. Tenemos una llave extranjera. Tengo un tipo de su categoría categoría I d Es la clave extranjera de la categoría. Pensé que estaría, um oh, me falta categoría aquí. Por lo que auto categoría es igual a categoría y tengo vida estatal policial remontada. OK, se ve bien. Um, así que digamos eso, um así que una cosa que también quiero mostrarles chicos está bien, podemos agregar algo en términos de relaciones en esto. No creo que lleguen a tienda en cualquier parte de la base de datos él mismo. Pero es más para, um, alquimia
secreta poder hacer,
um, um, miradas
dinámicas entre tablas. Entonces lo que voy a hacer es establecer una relación entre el bloque y sus posts y la forma de hacer eso es a través de
la relación db dot y eso básicamente le dice el
look del modelo de sangre . Y cuando tengo un objeto blawg, puedo hacer bloqueado nuestros posts y por favor devolver de vuelta los postes que están relacionados con el dedo del pie que bloquean. Entonces tenemos que pasar la clase para eso. Para esa relación, tenemos que pasar una espalda y un dedo del pie de referencia. Eso y eso es básicamente el blawg es decir de poste de vuelta a sangre ¿Qué es la nave rusa? Es Es la cuadra, ¿verdad? Y por último, ahí está la convocatoria de sesión. Lacey es igual a dinámica, lo que significa que cuando lo hago miro hacia arriba. No necesariamente,
um, um, saquen todos los posts de los blogueados, a menos que yo, como, les pedí
explícitamente. Por lo que maneja eso para nosotros y hace la consulta para el post siempre que lo necesite. Entonces vamos a jugar con él un poco en el,
um en la terminal para ver cómo se ve eso.
65. Post: De acuerdo, Así que es hora de hacer algo. Um So migraciones. Entonces Oh, vamos a ver, no
tenemos un error ahí excluyendo el O. J no tiene atributo para ing. Ah, vamos a ver. ¿ Qué es esto Online? 26 pisos. Ah, empieza un error tipográfico. Déjame comprobar dos veces Clave foránea. Uh, me falta la llave. Su llave extranjera. OK, y digamos eso Y servidor equivocado. Está bien, ahora se ve bien. Perfecto. Por lo que queda clara la pantalla. Y así ahora vamos a hacer el migrar. Entonces intentemos eso, um Tyshon Ministry. ¿ Por qué? En realidad, déjame poner esto. Por lo que quiero ver apareciendo la versión. Tenemos 70 d y 30 nombre I D 39 I d, um son mis grandes. Entonces ahora tenemos esta nueva y vamos a revisarla. Por lo que tenemos categorías creadas sin clave primaria constreñida de yo d perfecto. Cuando tengo su post y tengo esta claves foráneas a autor, blogger y categoría Perfecta. Y, um, sí. Una vez más, es como insertar ese autor autoridades, Definitivamente
parece un ah, como un error fuera de algún tipo. Pero lo dejaré así. Entonces se ve bien um Así que volvamos a la terminal y vamos a hacer por diversión gestionado B Y estén fuera de grado arriba. Genial. Perfecto. Entonces ejecuta el, um la actualización que está aquí. Ah, mostrar mesas. Sé que lo tenemos. Ah, categoría impuesta. Perfecto. De acuerdo, juguemos un poco con la modelo. Por lo que ustedes chicos consiguen una idea Oh, archivo con el que interactuar con sus nuevos modelos. Entonces voy a hacer pitón minutos p lavado. Bueno, déjame limpiar primero la pantalla por teléfono. Gestionarme. Por qué Shell. De acuerdo, entonces vamos a importar modelos de oferta. Y vamos a importar de blawg todos los modelos. Y así leamos una nueva categoría. Por lo que la forma en que creemos una nueva categoría va a ser categoría igual a categoría. ¿ Y qué más menos pitón? Eso es un Eso es una gran categoría. Um, así que vamos a db sesión en esta categoría y vengo perfecto. Entonces revisemos mi secuela para ver si las cosas se ven bien. Entonces si sí selecciono estrella de la categoría Ahí está. Tenemos nuestra categoría de teléfono pastel ahí. Um Vale, así que ahora nos vamos ahora. Um, crea libros de bloques. Entonces para eso, necesitamos un autor. Entonces, sólo vamos a conseguir el primer autor aquí que podamos conseguir. Y ese autor es Por supuesto, Jorge. Y luego voy a tener la categoría, que también es la primera, Así que primero la categoría c python Perfecto. Y así vamos a crear un post que vamos a hacer Post igual a Post. Pasamos el blawg. Pasamos la oferta. Entonces tienes ese e c ese as en lugar de hacer mirando el bloque i d. O es como que es mejor simplemente tirar el objeto y dejar que el modelo tipo de,
como, como, averiguarlo las cosas. ¿ Dejando qué? De lo que necesita. Entonces que eso iba a ser el teléfono pi es genial. Y el cuerpo es Por eso, por teléfono, una escuela y la categoría, sólo
tiramos la categoría y notamos que no estoy pasando este registro ni el estado policiaco. Ah, llamado bloque. Ah, no
me dieron por una cuadra. Correcto. Entonces Blawg es igual a consulta blawg primero, y vemos ese bloque. Sí, mi por el bloque. De acuerdo, así que intentemos eso otra vez. Ahora funcionó bien. Por lo que voy a hacer db session ad post y sesión D B. Ven Impresionante. Por lo que parece que pasó. Vamos a revisar en la, uh, mesa
de correos. Y ahí está. Tenemos son la sangre i D.
Cual es el blawg. Ah, las pipas. Um sangre. Mi autor i d y el título El cuerpo El nulo perezoso. El estado publicado, que es la fecha y hora de hoy en En el tiempo de Greenwich, es la vida y la carga que d es, uh oh categoría la nieve. Entonces eso es inesperado. Um, eso es si hicimos las cosas correctamente aquí categoría. Por lo que sí tenemos categoría. Podría estar faltando algo en la modelo. Entonces volvamos al Y por eso es importante que ustedes jueguen con sus modelos primero antes de ponerlos en la aplicación, porque a partir de ahí se pueden obtener errores. Por lo que es categoría O c Me falta categoría I d. aquí. Creo que debería tener la categoría I d aquí y, uh, comprobamos. Ah, así que tengo en realidad dos errores que tengo, um definí las ideas de categoría el campo, así que necesito poner esto en categoría I d. Y necesito poner categoría punto i d. aquí. De acuerdo, Entonces ,
um, volvamos aquí, para que los cambios que haces en tus modelos no se reflejen automáticamente debajo en la terminal, necesitas salir y volver a ponerte para que estén como recargados. No es como la funcionalidad de recarga automática, así que Ah, está
claro y lo hará por teléfono. Manejarme? Por qué, um, Shell otra vez. Entonces, maximicemos. Y fue lo mismo aquí de modelos de autor,
um, um, y de modelos de sangre, Importar estrella y autor es el primer autor y bloggers la primera sangre y las categorías . La primera categoría y tengo que suponer aquí, que es el segundo post, Um, que en realidad estaba desacreditando el problema antes, Así que creo que cuando también escribí Así que voy a tener 1/3 bloque post aquí, y lo voy a llamar. Este es mi tercer puesto de bloque. Y siempre mira I DS es el título, así que eso debería hacerlo. Es la forma en que eso se ve en el commit de base de datos. Um, así que la tercera vez es el encanto. Y ahí tienes, encontrando aquí tenemos categoría D. Entonces eso hizo el truco Se ve bien. Um, en realidad ahora quiero, um, básicamente borrar todos los posts porque estos son como puestos de prueba y queremos tener una mesa
vacía. Por lo que hay que hacer es el liderato desde el post de nuevo. Hay algo Mi sitio secuela. Um, puedes hacer esto también en la terminal en el lado pitón. Ah, y, um, pero esto es Esto es más rápido. Y por supuesto, no
hay nadie do por su. Así que ten cuidado cuando lo hagas. Por lo que el labio de poste. Y ahora, como pueden ver, no
hay, um, no
hay publicación ahí, así que tenemos una mesa vacía. Entonces ahora sigamos y empecemos a trabajar en el, um, en los puntos de vista para esto para este post. Um, vamos a hacer como el esqueleto. Y en el en la siguiente lección, vamos a hacer mucho, mucho más. De acuerdo, Entonces, um, salgamos de aquí y despejemos la pantalla. Um, y lo que queremos hacer ahora, está en los puntos de vista de sangre. Vamos a nuestra primera ruta para poder, um, poder,
uh, uh, generar nuevo papa. Por lo que la ruta va a ser cortada
poste, y vamos a tener una tala requerida para esto. Y vamos a definir estos, preguntar la función de post,
y por ahora, y por ahora, eso es sólo poner poste de bloque de retorno. Entonces sabemos que estamos en el lugar correcto. Bueno, digamos eso. A ver si podemos equivocarnos la aplicación. Y, uh, esto va slash post y su post suerte. Por lo que en la siguiente sección vamos a empezar a construir el front end para esto. Ah, para esta funcionalidad de publicación de bloque.
66. Introducción a la Markdown: bien. Quieres hacer mucho en esto en esta lección, Así que asegúrate de estar relajado y haber tenido una especie de, como un pequeño descanso. Um, viejas cosas buenas, pero muchas por las que pasar. Entonces empecemos. Ah, lo primero que quiero hacer es que necesito más bibliotecas sobre requisitos. Txt y esos van a ser ah por slog telefono si yo que es una biblioteca que me permite
generar slogs sobre la marcha sin tener que preocuparme por generarlos en el otro se llama matraz marcado hacia abajo y marca abajo es una especie de como a Es casi como un Fudoh, um, lenguaje de
formateo. Pero no es que el lenguaje sea como un set off ah, off rules o utilidades para hacerte en ello y agregar, um, texto, um, algo así como formatear de una manera muy estándar. Y puedes buscar si haces un Google on like mark down. Um ah, sí. Enseñar que es, um es una buena ah, buena búsqueda. Vas a ver cómo puedes hacer encabezados. Ya ves cómo haces encabezados haciendo, ya
sabes, algo así como señales encontradas. Y dependiendo de cuántas señales de libras tengas, generará los diferentes tamaños, uh, listas y todo eso. Entonces échale un vistazo a eso. Um, asegúrate de conocerlo un poco. Tengo imágenes y todo eso, pero es una muy guay,
um, um, especie de como para aparearse lenguaje de utilidad,
um, um, por permitir que la gente pueda especie de, como, editar su su puesto. Entonces vamos a controlar a ver desde aquí,
y vamos a hacer un peeping Stall requisitos. controlar a ver desde aquí, Perfecto. Por lo que ahora tenemos mordida desacelerada si destellaba markdown instalado. Entonces hagamos,
um, um, un marcador de posición para eso donde mostramos lo real, como artículos de post. Y lo vamos a hacer aquí en plantillas blawg. Y voy a crear un nuevo archivo llamado, um articulo dot html. Y ahí dentro, voy a básicamente, um, poner algunos marcados hacia abajo para que lo probemos que funciona bien. Entonces voy a masa, ya
sabes, extiende base html, y vamos a hacer una charla de bloque titulada, que va a ser bloqueada post. Y vamos a tener,
um, um, contenido de
bloque. Y así la forma en que este juego Orender marcado código es mediante el uso de lo siguiente se utiliza filtro marca abajo y se hace un filtro final. Es como un bloque, pero es un ataque personalizado para lidiar con mark down. Y así lo voy a hacer sólo para que te veas veo aquí algunos marcados hacia abajo Así que el título va a ser Ah, estás marcado hacia abajo. Y luego voy a hacer, como una pequeña lista 0.1, la siguiente y la siguiente, y te darás cuenta de que esos son reemplazados por 123 Así que eso es como una inicial de ordenamiento
fácil marcado hacia abajo. Um, sí
necesitamos gustarnos, incluir, Antes de renderizar esto, necesitamos incluir mark down en la unidad y para que la aplicación sepa lidiar con esto esta cosa. Entonces vamos a hacer desde el último punto txt Oh, sin lino e x t punto marcado marca de importación y voy a crear una entrada para marcado aquí abajo marca abajo y pasé el arriba. Entonces a partir de ese punto en la aplicación, Osada renderiza, um, contacto de rebaja. Um, entonces eso es eso. Y vamos a ver si podemos renderizar ese artículo aquí um, Así que vamos a hacer una función rápida aquí llamada, um, articulo, Al
igual que ves cómo se ve eso y algunos sí artículo slash, y luego estoy va a regresar. No va a haber Logan requerido. ¿ Alguien puede ver el artículo, y luego voy a renderizar plantilla slash log article. De acuerdo, entonces veamos si eso funciona. Um, se está ejecutando, así que sigue siendo artículo de slash. Tenemos un artículo más cerca de ahí tipo. Ah, ahí
tengo el personaje equivocado. Entonces veamos que se recarga y se refresca. Perfecto. Entonces ahora ve cómo está renderizando el 123 y estás marcado hacia abajo. Entonces eso parece estar corriendo. Por lo tanto, ahora empecemos a construir sobre la funcionalidad de publicación de bloques real. Pero antes de que hagamos eso, algo que yo estaba pensando es que necesitamos otro decorador. Entonces recuerda cómo tenemos la,
um, um, tala requirió un mayor aquí. Entonces estaba pensando que, ya
sabes, podría tener un largo y requerido para cierto, um, para que los usuarios puedan publicar comentarios como dijimos. Pero me gustaría tener otro decorador solicitando específicamente eso. Ah, eso suficiente sobre autor. Él es el que se ha conectado,
y yo estoy pensando en el admin, y estoy pensando en el post curso. Um, podrías estar encerrado, pero si eres es autor no está configurado, entonces, um entonces no deberíamos poder hacer nada. Y creo que,
um, um, en la tala cuando? Cuando estás en el autor, tu sesión se establece aquí. Entonces hagamos ese decorador, y va a ser más o menos lo mismo, pero vamos a llamarlo autor requerido. Y en este caso, lo que voy a hacer es si session get es author. Um, entonces si es si sesion get se conoce a su autor, entonces voy a volver automáticamente sólo aquí en una pizarra a bordo de cuatro o tres. Y para eso, cualquier dedo del pie incluya a bordo de aquí. Entonces es un poco diferente en el sentido de que si no eres otro, no
voy a, como, como, mandarte de vuelta a la página de inicio de sesión amablemente. Probablemente estés haciendo algo hacky. Entonces sólo me va a gustar devolver un 43 aquí. Entonces eso es todo por eso. Y así ahora voy a tener el,
um, um, en los puntos de vista aquí lo voy a hacer en su lugar, fuera Logan requerido. Voy a hacer autor requerir, y necesito importar eso aquí. Perfecto y lo mismo con el con un post, ¿no? No deberías poder publicar si no eres autor.
67. Poste Forma: Entonces, empecemos a trabajar en el formulario en bloque para el puesto. Y así tenemos, um, embarazada llamada es la clase de postformulario, y también es clase de forma. Entonces vamos a tener un título, que es el título del Post. Y es un Stringfield. Voy a mostrar título en la etiqueta y luego aquí, cuando se requiera un tienen validadores y longitud máxima, va a ser 80 y luego voy a tener un cuerpo, que es un Es uno nuevo. Tenemos un campo de área de texto de noticias, que va a ser contenido, y luego voy a hacer evaluadores. Se requiere, um, y finalmente tener la categoría. Entonces con la categoría también serías tú algo nuevo, que es que podemos hacer, ya
sabes, esto va a ser un selecto, ya
sabes, esos seleccionan múltiples campos selectos, pero queremos toe cargado con los contenidos de las categorías que tenemos en la base de datos. Entonces para eso, podemos usar algo llamado Query Select Field y todo un campo selecto significa que va a sacar de un básicamente de una tabla que
designo, um, designo, um, el contenido de eso fuera de ese conjunto, um Entonces la forma en que haces este problema pasó una fábrica de consultas, y eso apunta a una función que necesito definir aquí. Entonces se va a llamar trata Gorey, y voy a baja permitir que en blanco sea igual. Cierto, porque, no lo sé, no
lo soy. No creo que debamos estar obligando al usuario a seleccionar la categoría. Um, en menos lo que al menos si el usuario quiere entrar a una nueva categoría, voy a permitir eso. Entonces sólo voy a tener otro Stringfield llamado la nueva categoría. De acuerdo, entonces vamos a añadir que, um, esa fábrica y es solo una función de ustedes definan aquí categorías y eso devuelve una categoría. Ah, consulta
Doug. Y tenemos que añadir, um, aquí. Ah, de wt reformas necesitamos en el campo del área de texto. Y también necesitamos agregar desde blawg modelos importar categorías para que esa consulta pueda funcionar. Y por último, voy a Ah, el, um de w t formas que e x t punto secuela alquimia. Y eso se siente consulta de importación Seleccionar campo. Perfecto. Um, así que ahora vamos a trabajar en el en la plantilla para eso que iba a renderizar ese formulario así que vamos al bloque. Um, vistas y trabajo en el puesto. Um, así que necesito apegarme a los métodos. Métodos iguales, um, get y post, y voy a tener autor requerido. Eso está bien. Y definir post perfecto. Entonces empecemos a cargar cosas aquí. Um, el formulario va a ser el formulario de correo, y vamos a tener un,
um, um, retorno de plantilla de Orender log post pensamiento molino de Eckstine. Bueno, tenemos que mejorarlo para él. Y necesitamos incluir el, um ver aquí. Ah, de forma de libro. Ah, Post forma cuatro. Perfecto. Y, um, veamos cómo se ve el HTML de These block post, y luego podemos cablear las cosas de la base de datos, así que vamos a crear una nueva plantilla. estoy teniendo un problema. Te presentas Te opusiste a html, y eso va a tener extiende. Um, vapor
básico. L Vamos a tener un título de bloque. Mira, post tendrían el contenido del bloque y, um, ver aquí, entonces, um, tendría una clase de carne igual a fila. Y luego una clase div igual a llamada. Y el offset tres y llame a MT. Seis, que es lo que hemos estado usando para bootstrap a lo largo. Y entonces vamos a tener el título. Uh, H tres, nuevo puesto de bloque. Y no tenemos ese ayudante de ayudantes de formulario punto html Importar campo render. Um, perfecto. Entonces vamos al formulario. Más para método iguala post y acción es el, um, Euro para post y el rol es igual a forma. Perfecto. Y tenemos nuestra, um CSR token etiqueta Hayden. ¿ Qué? Y así ahora sí renderizamos campo una clase de título de formulario es igual a control de formulario. Y así cuando una copia y pega eso para todos los demás campos. Entonces en este caso, vamos a tener cuerpo. Y una salvedad aquí es porque thes pero va a ser un área de texto. En realidad voy a pasar un segundo. Mejor medida aquí, que se llama Rose Rose, es una serie de filas que ese campo, no campo de área de texto va a tener. Entonces ahora aquí está la categoría de formulario, y por último, una nueva categoría. Entonces si el usuario quiere ingresar a una nueva categoría, lo
pueden hacer ahí dentro. Ya casi terminamos aquí. Um, tipo de
botón igual a enviar. Clase es igual a Bt n la falla y post perfecto. Por ahora, tan bueno. Um, así que vamos a ver si tenemos algún error aquí. No, se ve bien. Entonces ahora vamos a un post el cual debería poder ver esa forma perfecta. Entonces tenemos un título aquí. Tenemos el contenido, que con las 10 filas aquí dentro y echa un vistazo a la categoría. Pero eso es raro. Dice categoría Python. Entonces lo que está pasando aquí es que, um, cuando hacemos esa reproducción, eso es lo que está pasando de vuelta al modelo, Um, perdón con la forma. Entonces cuando hacen esta consulta de categoría
, selecciona las categorías. Y no he encontrado la manera de hacer que eso,
um, um, trabaje con esto o con alguna otra representación como. Entonces lo que yo lo que hice aquí y y ustedes pueden comprobar si hay otra forma de hacer esto es que me acabo de devolver yo mismo ese nombre en lugar de ese reproducir. Pero me gustaría tener el para seguir teniendo esto y de alguna manera filtrar eso. Entonces si descubren una manera de hacer eso, háganmelo saber. Pero ahora si recargo aquí, verás que tengo la categoría correcta. Por lo que buscando lucir bien hasta ahora. Ahora, sólo
necesitamos hacer la pieza de base de datos, que vamos a hacer en el, um en la siguiente paz
68. Guardar el post en la base de datos: Entonces sigamos adelante y veamos cómo podemos crear el poste de bloque. Um, así que necesitamos, um, aquí en vistas de bloque sobre el método de publicación vamos a hacer si, ah, forma validar en enviar. Con el cual siempre tenemos. Ya hemos visto el pasado. Um, así que vamos a hacer algunos chequeos aquí. Lo primero que voy a comprobar es si hay un formulario,
um, um, datos de categoría
nuevos. Eso significa que el usuario está pasando una nueva categoría. Entonces voy a crear ese objeto sobre la marcha sobre la base de datos estableciendo una categoría ,
um, um, dentro con la fuerza que está pasando el usuario. Y luego voy a una sesión en esa, uh, categoría. Y luego quiero hacernos un rubor. Entonces no te comprometas aún porque soy no quiero comprometerme, um, Onley Esta cosa me quiero comprometer cuando tenga todo el paquete. Entonces Pero con sesión de ras, ahora
tengo el objeto creativo,
um, um, y con un potencial i d. Así que eso es,
Um, Um, la otra cosa es, si recuerdas que el usuario puede pasar un espacio en blanco, um, categoría. Pero si hay un dato de categoría siendo pasatiempo en su lugar, el usuario sí seleccionó algo. Entonces quiero hacer lo siguiente. Tengo que buscar esa categoría. Y la forma de hacerlo es mirando la categoría D. Y lo haces usando esta función auxiliar,
que es Ah, que es Ah, consigue PK Y pasaste la categoría a la disfunción del dedo del pie. Pero esto sí es que obtiene la clave primaria SPK o el yo d fuera de esa selección de la de ese campo. Y luego después de eso, voy a mirar la categoría haciendo un look up,
uh, uh, categoría esa consulta, Um, ese filtro por I v igual a categoría I d que primero y que eso cuida el de la categoría. Um, lo contrario, sólo
voy a pasar que la categoría facilidad ninguno. Perfecto. Entonces, nada, estoy asumiendo que sólo vamos a tener un blawg por aplicación, así que solo voy a decir águilas blawg que consulten primero. Entonces si hay más de un bloque y quieres crear un sistema que necesite más bloque, entonces necesitamos,ya
sabes, ya
sabes, averiguarlo aquí afuera, um, y escribir algunos otros como funcionalidad. Pero para este curso, solo
estoy asumiendo que es sólo una cuadra la que estamos teniendo aquí. Para que eso funcione. A menos que yo quiera que consigamos al autor. Entonces hago la oferta, la consulta, y voy a buscar por la persona que está ingresada,
correcto, correcto, Así que usa su nombre es igual a sesión. Uh, usted ciertamente. Y luego primero tengo mi categoría tienen mi sangre, y tengo a mi autor. El resto es justo lo que se pasa por el formulario para formar datos de título. Uh, y el cuerpo es a través de los datos del cuerpo de la forma. Y para este registro, voy a usar esta biblioteca que instaló y tú solo para slog si yo, uh título. Um Y así es ahora el momento de crear un post objetos o no pasar el título del autor del blog
categoría cuerpo y lucir perfecto s propio ídolo Devi, sesión God Post y el comentario de la sesión B. Y finalmente, voy a devolver al usuario al administrador porque en el ejército,
voy a tener, como, como, un enlace para crear nuevos posts eventualmente. Entonces solo voy a hacer eso aquí, y comprobaremos si todo salió bien en el lado de la base de datos. Por lo que tengo algunos errores porque necesito, como, agregar categoría y solidificar y publicar. Entonces voy a ir a la cima y a esas cosas de ahí dentro y vamos a ver aquí. Entonces de modelos de bloque para blawg Post en categoría y, um, de lento si salí lento si perfecciono así no debería ver más errores ahí, eso se ve bien. Entonces vemos si hay errores. Desgastes conocidos. Entonces probemos eso. Tratemos de crear nuestro primer post de sangre usando el formulario. Entonces estamos en el puesto. Déjame recargar eso por si acaso. Y voy a decir aquí,
um, um, frasco es realmente increíble para el título, luego contenido. Um, voy a decir matraz, es uno Awesome. Um, por teléfono. ¿ En serio DreamWorks? Se lo recomiendo. Perfecto. Y así vamos a intentar con la categoría primero y ver si eso funciona y luego vamos a hacer post Ah, objeto. Eso es mucho ser una cita. De acuerdo, entonces es la categoría de formulario Ellie. Fecha en blob. Usa la mentira. 72. Ah, Dada. Dada. De acuerdo, así que intentemos eso. Podemos hacer recarga aquí. Um, porque va a mandar los mismos datos. Y ahora tenemos referencia de carácter comprador local antes de la asignación. Ver aquí. Ah, Es datos de categoría de formulario aquí, así que vamos a ver eso. Eso se ve bien. Volvamos atrás y publiquemos de nuevo. Enfriar. Por lo que parece que pasó. Y vamos a revisar en la base de datos para ver si todo se ve bien. Así que selecciona estrella de Post. Impresionante. Déjame maximizar esto y ver si se ve bien. tienen el i d. el bloque I d. Autoridad el título. El babosa del cuerpo. Ver las babosas. Matraz. ¿ Dash está diezmando realmente? Tenemos la fecha, y tenemos la vida es una y llevar ésta Perfecta. Por lo que se ve realmente bien. Um, así que ahora estamos configurando adecuadamente eso. Déjame hacer otra con una nueva carrera para ver si eso funciona. Entonces digamos aquí mi nueva categoría en mi bloque, esta va a ser la nueva categoría. Entonces ahora voy a tener esto va a estar en blanco, y voy a ver que esta es una categoría de matraz. Entonces post que se ve bien. Ahora, hagamos otra búsqueda aquí y perfecta. Tengo una categoría dos, que es la nueva categoría. Y si
selecciono, um, empiezo de categoría ahora tengo a uno en perfecto así que se ve realmente bien. Enhorabuena. Esto estuvo mucho fuera de mucho trabajo, y Ah, pero estás empezando a ver el apagado usando el o M y Ah, y usando esto. Esta herramientas como la forma, la secuela. Alquimia. Todo esto se está juntando, así que se ve realmente bien. Um, ahora vamos Ah, vamos a tratar de hacer esto,
uh, uh, este post en el único en los puntos de vista del artículo.
69. La vista de artículos: Entonces ahora vamos a,
um, um, crear la funcionalidad para renderizar en artículo. Y la forma en que hacemos eso es en el abuso de sangre. Tenemos la función de representación de artículos aquí, así que cambiemos eso para que sea realmente saca de la base de datos. Entonces vamos a hacer algo aquí llamado slash slug. Entonces la idea es que busques por cierto, ese campo babosa en la base de datos, y pasamos eso a la función a. ¿ Te acuerdas de este registro? Es, ah, único. Por lo que funciona perfectamente bien nosotros como i. D. Así que es realmente simple. Simplemente buscamos el poste. Um, por el por este log, um, filtrar por log es igual a babosa, y hay una Hay una función útil llamada primero o 44 Y lo que eso hace es si encuentra que, um, que registro en la base de datos por la búsqueda que lo estás haciendo lo devuelve a la publicación viable, y si no, entonces devuelve un para un cuatro a la vista. Entonces eso es bastante práctico. Um, y aquí Así que voy a hacer ah, más allá del post a la plantilla. Y por supuesto, necesitamos modificar la plantilla Así que vamos a, um, básicamente tenemos que cambiar lo siguiente. Entonces en lugar de bloquear postes aquí, voy a poner el título fuera del poste. Andrea, sobre El post es el es el objeto que se extrae de la base de datos. Y ah, la otra cosa es, um Bueno, deberíamos seguir con la cosa de clase ro de, um, de bootstrap y que disparan y más contenido aquí y luego también, han, uh, clase es igual a offset tres y llama en el seis y ese rodaje. Y aquí dentro. Perfecto. Entonces ahora, um, vamos a tener Ah, saca esto. Vamos a tener un título, que es el título del post y la forma de renderizar el actual post iss. Hacemos el cuerpo del
poste, y luego filtramos con marca hacia abajo, para que ese tipo que tubería o línea línea vertical se llame tubería. Y markdown está disponible para nosotros ya que tenemos instalada la biblioteca. Entonces voy a tener una pequeña división aquí, como un caballo en la línea, y luego voy a hacer su clase igual texto silenciado en este tipo de va a ser como una carpeta. Um, publicado por voy a tener, como, un pasatiempo a la al autor. A pesar de que eso no va a , ya
sabes funcionar, ya
sabes. Um, de verdad. Pero se podría implementar eso. Y, um Y luego pongamos a la fecha en post publicar. Ellos, um Y vamos a usar una función llamada Cadena de Tiempo. Déjame envolver. Esta oficina se ve un poco fea. Ah, s t r f tiempo. Y eso es un por asesinato. Entonces conformamos actualizaciones vamos a usar por ciento. ¿ Por qué? ¿ Cuál es el año? ciento. Yo soy por ciento el y es un poco feo, pero podemos trabajar en eso. Um, sólo que tenemos algo en su lugar y voy a hacer dentro y otra vez una deriva que no va a ir a ninguna parte inicialmente. Um, y vamos a poner fresco el nombre de la categoría. Um, así que eso se ve bien. Lo último que quiero hacer es como, una vez que publicamos al, um, al bloque que enviamos al usuario o al autor directamente a eso. Entonces hagamos ese cambio aquí. Um, en lugar de enviarlos a Rodman, voy a hacer retorno redireccionamiento euro cuatro, uh, artículo y luego pasó la babosa. Perfecto. Entonces ahora cuando publique, me van a llevar a eso. Um, para que ese artículo eso Veamos si tenemos algún heredero. Um, se ve bien. Entonces vámonos. Poste del dedo del pie. Um, este es otro artículo, y puedo poner algunos, ya
sabes, algunos marcados aquí para que pueda poner algo así como, um, la versión inicial es el tipo de como un subtítulo y comida aquí algunos. Esta es la versión inicial del artículo que tiene ver fila y que esas estrellitas son para hacerlo audaz. Tiene cero hits en internet, y eso debería estar bien. Y lo vamos a tener en la categoría pitón. Eso es todo. Entonces eso es correcto. Postear error construido. También, creo que tiene que ver con esta línea aquí. 85. Sí. Se supone que esto es solo euro para artículo coma babosa babosa porque ellos estoy pasando los dos los dos parámetros ahí. Entonces déjame decir eso. Y, uh, vamos a crear otro post porque vamos a tener ese ya. Creo que una vez guardado correctamente en la base de datos, podemos comprobar. Uh, sí. Entonces eso es a otro. Um, mira aquí la belleza. Ah, matraz. Y luego voy a hacer lo mismo. ¿ Por qué es impresionante el frasco? Me iba a gustar un subtítulo. Um, y voy a poner flash es impresionante porque sí, uh, porque tiene mucho. Cuál es el Astor está mucho fuera de características, así que pongamos eso en matraz y publiquemos perfecto. Entonces por lo menos me están enviando a la así la zorra apropiadamente. Y pero es decir sangre uno se supone que sólo tiene un tributo de don. Autor. Ah, así parece que no tenemos un vínculo entre post y author en la modelo, lo cual es bastante interesante. Entonces la forma en que arreglamos eso es ir a los modelos de sangre y cuando decía una relación entre post y autor, Entonces ,
um, no sé si yo
como,
hablé de como, su, um, en detalle porque es, como, tan segunda naturaleza para mí. Pero a ver cómo estoy haciendo pasado autor nombre completo,
como, como, estoy saltando entre dos tipos de me gusta,
base de datos o tablas, ¿
verdad? Eso es oro como enlazar. Y es algo que vas a tener. Siempre has sido una especie de uso como. Por lo que post author, Nombre
completo es uno de ellos y pose nombre de categoría es otro. Como saltar desde el dedo del pie la categoría al nombre y la forma en que haces ese tema a, um, estas relaciones de las que hablamos brevemente con, um, con el, um, categoría. Recuerda como tengo este directorio post back grieta Blawg dynamic, um, con el con el postal al blawg. Y tengo no creo que tenga una relación de categoría. Déjame ver. Sí, lo tengo. Tengo la i d externa pero va a tener una especie de como una relación. Entonces la regla del pulgar ahí es que siempre se tiene el esto se llama una
relación uno a muchos . Yo como por uno, uh, post, hay un potencialmente que podrían ser. Es decir, sólo
hay una categoría, pero para cada categoría, podría
haber múltiples publicaciones. Entonces la idea es que coloques la relación en las sidras múltiples que uhm básicamente esas eran las, um eran del tipo fuera así. Único señala a los múltiplos. Y en este caso por eso, ese enlace Toby hizo. En realidad es para el para el autor. En realidad está en el modelo de autor. Entonces vas a ver cómo hago eso aquí. Entonces voy a hacer posts y eso va a ser como un nuevo campo, y me voy a ir. El post de relación DB es la clase a la que lo estoy vinculando. Y el ref de atrás es autor. Y ahí es donde qué me va a dar esa relación? Y, uh entonces vamos a ver qué? Eso Lo que eso hace. Um, veamos que no tengo ningún problema ahí, así que recarguemos. ¿ De acuerdo? Y como era de esperar, no
tengo un tema de carrera entre post y categoría. Entonces otra vez, cada uno, um, cada categoría puede tener múltiples post de amor. Entonces ahí es donde debemos hacer su relación. Um, así que vamos a los modelos de go blawg, y voy a tener aquí tener categoría igual a la relación B y la
categoría clases y la espalda Griff iguala TV back graph posts para que los posts de la que eso categoría tiene y encajes igual dinámica. De acuerdo, entonces ahora puedo ir a un post y y a la gráfica de atrás fuera del off eso de qué categoría? Señala utilizar esta relación. Entonces es la que cargamos y hay. Entonces ahora tengo, sabes, publicado por Jorge Escobar en matraz. Entonces espero que eso tenga sentido. Es un poco complicado conseguir que esas cosas comiencen un día. Um, pero te pones el ahorazo de Es así que básicamente, recuerda que si tienes un post y, um, quieres tener una relación con el con una categoría, colocas la categoría como campo, y básicamente va a ser un campo. Si buscas una publicación,
puedes hacer post start category y obtendrás la recuperación a la que pertenece. Pero también, puedes tener puedes buscar una categoría y hacer eso posts y conseguir el post que están dentro esa categoría. Um, así que algunas cosas geniales que hemos aprendido aquí. Y ahí tienes. Se puede ver que el post del autor y la espalda. Autor de Griffey. Entonces eso significa que puedo hacer post dot author y obtener la relación aquí. Um, entonces esa es una funcionalidad bastante útil que vas a usar mucho. Entonces, um, cosas
frías ahora vamos a saltar a listar los artículos en el admin y la página de inicio para que nos guste y podamos ver la lista de artículos en un solo lugar
70. Lista de artículos: De acuerdo, así que vamos a, um, empezar a mostrar una lista de los off the posts en el, um en la página de administración también preguntó la página principal del bloque. Entonces para hacer eso, necesitamos,
um, um, ir a las vistas negras y,
ah, ah, en lugar de esto. Ah, blogger Admin. Um, siendo solo atascado revisando el si la sesión sale del autor, tenemos que hacer un cheque fuera del post, leer el post en, um, vamos a mostrarlos en orden inverso en términos de fecha y luego enviarlo al a la plantilla. Y luego necesitamos hacer algunos cambios a partir de plantillas para que ahí se muestren esas publicaciones ahí. Entonces antes de empezar a hacer eso, me acabo de dar cuenta de que hay, ah en nuestras opiniones de autor. Tenemos que, um cuando miramos hacia fuera, necesitamos también pop esta sesión para el autor Oriente. Entonces recuerda cómo nosotros en una sesión es autor del al sistema. Ahora necesitamos también hacer pop eso para que cuando la gente mire hacia fuera, esa galleta o sesión también,
um,se um, borre. Entonces solo adelante y en eso. Y, um, tenemos que ir ahora a la ah, blob. Usa admin para iniciar un proceso de conseguir el, um, lo siento. Obteniendo los, uh, los puestos de bloque para el admin. Entonces digamos aquí, um, vamos a hacer lo siguiente. Vamos a conseguir puestos más viejos. Um, y necesitamos hacer una consulta propia o comprar. Ah, post fecha publicada. Pensé que el e S C. Eso significa descender. Y tenemos posteando aquí en sangre una vez, sin embargo lo hacemos. Perfecto. Entonces ahora vamos a pasar esos posts dedo del pie del admin html. Por lo que post es igual a posts. De acuerdo, así que vamos a las plantillas, um, para el administrador de sangre. Y, um, así que tenemos nuestro, um, bienvenido aquí. Supongo que entonces podemos hacer lo siguiente. Vamos a añadir un con un post de clase fuera, se ponga y vamos a hacer un look de cuatro. Por lo que para el puesto en los puestos. Y así ahora Post va a sostener un viable para ah, para la información de post al hacer y para aquí y ahora vamos a hacer, um, un post item, y vamos a tener el título de decir que con un hipervínculo para esos títulos. Um, por el artículo y nota cómo estoy haciendo el artículo. El euro cuatro en este registro es el registro de publicaciones. Entonces ahora estás notando lo fácil que es esto Una vez que tenemos el derecho, um, las cosas en su lugar, no
es mucho trabajo extra. Entonces, mira, no
tengo ahora un título con un dedo del pie hipervínculo. El artículo correcto, y eso va a funcionar perfectamente volando. Me falta una cita aquí. Perfecto. Entonces ahora voy a hacer un Ah, voy a hacer un texto silenciado, que es,
como, como, una especie de fuente más ligera. Esto es, uh, proporcionado por bootstrap. Y voy a tener un poco, como un por línea fuera de la del autor. Este Ah, por ahora no enlaza a ninguna parte. Hay algo que podrías hacer. Digo, como un reto personal o ejercicio para ti es crear como, um tal vez páginas de perfil para el para los demás. Y voy a hacer en probablemente si cita eso, um un tiempo de cuerda apagado. Y yo no lo lograría. Ah, ¿por qué? Y es realmente romper eso para que se vea más bonito. Entonces voy a poner un espacio aquí, y finalmente voy a tener la categoría. Entonces en, um, redactan igual y otra vez. Esto se puede hacer como tarea es saludar páginas de categoría donde se muestra el post para esa categoría. Perfecto. De acuerdo, así que sigamos adelante y veamos si eso funciona. Entonces voy a guardar este archivo. A ver el Se está ejecutando. Está funcionando bien. Entonces esto está en el admin. Entonces vamos al admin slash admin. Y si guardo este archivo, soy yo uso. Yo no guardé el archivo. Eso es correcto. De acuerdo, entonces ahora si hay algún error y es recargar aquí, Ahí tienes. Perfecto. Entonces ahora tenemos todos los posts que tenemos interés de despedir el blawg, y ustedes tienen el posteado por Jorge Escobar. Este enlace no hace nada. Y la categoría, um, que tampoco hace nada. Pero si hace clic fuera del, um, en un artículo individual, tenemos el artículo cargando. Entonces eso es Eso es impresionante. Esto es genial. Um, hasta ahora
tan bien. Entonces ahora hagamos algo similar para el para la página de índice y vayamos allí. Entonces, para la página del índice, básicamente
voy a hacer cosas muy similares aquí. Voy a tener los, um, los posts aquí, y, um, voy a hacer lo siguiente. Entonces si reviso que los bloques sean iguales a cero, entonces voy por la puesta a punto. De lo contrario, voy a ,
um en realidad ,
no, no necesitamos hacer esto más, porque este retorno lo hará Will, simplemente
vamos a detener cualquier ejecución más fuera de esto. Entonces vamos a hacer el post lo mismo aquí, y vamos a tener un, um veamos. Vamos a tener la plantilla aquí, pero quiero hacer algo cuando tenga el título del bloque en algún lugar de la, um en esa página. Entonces voy a cambiar esto un poco en su lugar, Off haciendo la cuenta blawg quer, voy a hacer lo que hice del otro lado, que es blawg igual a block query primero, y eso me dará sólo un primer bloque para que aquí en lugar de que los bloques son iguales aquí. Voy a hacer, si no logaré, porque eso significa que no tengo retorno. Entonces haz esto. De lo contrario consigue el puesto y pasó el blawg como los postes Blawg y Post Eagle. Perfecto. Entonces ahora voy a crear la, um, la página html índice para esto para los son reales,
como, como, página de índice
blawg. Entonces leamos en tu expediente. Yo lo llamaré Índice X TML. ¿ Y sabes qué? Se está poniendo un poco en regla aquí con las tapas. Lo siento mucho, chicos, y usualmente no hacen esto, pero, um, es ser como construir,
um, um, despacio. Aquí hay una función muy cool que dice que puedes hacer cerrar todos los tipos puedes cerrar todos los demás tipos que no son éste o cerrar paradas a la derecha. Hay mucho como, buena fortuna, ¿no? Yo sólo voy a cerrar los grifos de sujeción para que podamos empezar de cero. Y, um, vamos a este índice html aquí. Por lo que comenzamos con se extiende, um base extremo el nous a un título de sangre con el nombre blawg y puede bloquear. Y a continuación, vamos a hacer contenido de bloque y voy a hacer la clase de muerte igual a fila. Y luego tienen clase igual call y el offset liquidado en los otros. Llama a los seis. Um, entonces aquí vamos a tener el nombre del bloque. Ahí es donde queríamos que el blawg pasara al so esta plantilla y luego tenemos una lista de publicaciones y, um así que voy a hacer para post en posts y luego y cuatro. Y, uh, vamos a ver, Vamos a tener la clase igual al post item y el título. Tus cuatro son demasiado geniales. Slog es igual a post slug, y vamos a tener el título del post aquí. De acuerdo, Entonces ahora tenemos lo que teníamos en el otro. X silenciado post por un borrador es igual a ah, maniquí y luego se opuso oferta nombre completo, y luego voy a hacer en fecha de publicación post. Eso s dirigir F tiempo por ciento y por ciento m por ciento, el I en una X ref y luego post categoría puede. Perfecto. Entonces eso es eso. Y, um, veamos qué más tenemos que hacer aquí. Um, guardé esto y me dejó volver a ver las vistas de bloque. Entonces, retornante en plantilla, tenemos el bloque el puesto. Está bien, se ve bien. Déjame ver si tengo algún error. No. Entonces vamos a la expresión final. A ver qué pasa. Ah. En bloque. Necesitamos un bloque final en el índice de plantillas html. Lo tendremos aquí. Entonces el contenido de sangre, correcto. Necesitamos una caja fuerte de bloqueo final. No hay errores. Recargar. Perfeccionan. Um, se ve bien. Lo único es que no tenemos una supongo que aquí no tenemos carpeta. Um, como tenemos en el admin. Entonces, en ese medio, ¿
dónde tenemos yo? Entonces, ¿teníamos un pie o en algún lugar? Um, vamos a ver. mejor fue Oh, lomejor fue Oh,fue tal vez en la lección o sección anterior más bien en la prueba. Sí, estoy confundido. Pensé que teníamos un pie o aquí. Entonces es en una comida porque eso es, um eso es algo que cada, um, bloque debería tener. Entonces vamos a editar el vapor básico l y todo destruido. No tenemos un falsificador. Eso explica eso. Um, así que vamos a aquí tienen clase, um, igual. Entonces voy a hacer otra llamada, oficial tres, y después llamaré al seis. Y luego voy a poner un poco como, ah, regla
horizontal aquí, separada, y luego vamos a poner comida er, elemento. Y cuando pongo, um, copia, derecha, 2015. Y, uh, sí, dejémoslo así. A ver qué se parece eso Savers y años. Y vamos a la página principal. Sí, eso se ve mucho mejor. Perfecto. Entonces esa es nuestra página inicial. Um, Así que vamos a ver en qué más podemos trabajar para nuestra siguiente ah siguiente sección.
71. Logde de de eslabón: Está bien. Entonces en la lección anterior, hice una especie de como un pie de página, pero me acabo de dar cuenta de que no está en el lugar adecuado. Um, deberíamos ponerlo dentro del contenedor. Entonces, um, perdón por eso. Creo que se ve un poco funky. Y creo que esta es la razón por la que. Entonces déjame decir eso. Y vamos a recargar la página. Sí, eso se ve mucho mejor. Entonces fue algo así como afuera aquí dentro fue como, ¿Qué es eso? Entonces sí, esto esto, esto se ve mucho mejor si hago clic aquí, estoy recibiendo los artículos reales. Esto es genial. Um, una cosa que quería agregar aquí era una especie de ayudante. Si estabas encerrado,
um, um, dedo del pie te permite, um, algo así como conseguir ah, tal vez una página de registro o un enlace de registro o mirar si estabas encerrado. Entonces así es como lo voy a hacer. Um, voy a comprobar eso. Si hay una sesión, noto que tenemos acceso a la sesión. Objeto aquí dentro de la plantilla con sin tener que hacer ninguna importación ni nada. Por lo tanto, ten eso en cuenta. Entonces si tenemos un autor registrado. Entonces vamos a decir,
um, um, un viaje te iguala, Earl. Cuatro. Ah, admin para que puedas ir a la página de administración si quisieras. Y luego voy a hacer un final Si y de igual manera, quiero comprobar si la sesión iss dijo para, um para nombre de usuario. Es decir, es un usuario conectado. Entonces puedo ayudarles a cerrar sesión. Entonces déjame copiar y pegar. Ahí hay euro cuatro. Cierra sesión y luego mira aquí y en realidad fue hacer otra aquí así que de lo contrario, si no son nombres de usuario, dijo
Sessions, entonces voy a invitarlos a iniciar sesión. Por lo que H ref Europa para la tala y Logan. Entonces, veamos si eso funciona. Uh, recargar. Perfecto. Entonces porque yo mi, um ah, y él es autor. Entonces obtengo el admin click aquí link, y si quiero bajar a Garrick y luego mirar con seguridad. Y ahora mira, me ha invitado de nuevo a LA. Entonces cuando puedo iniciar sesión aquí y 12345 y sí, eso nos está llevando al éxito de registro cuando deberíamos emitir llévanos a la página principal. Entonces, veamos también eso. Entonces después de que la gente se registra correctamente, um, eres cuatro Index en lugar de azotar, y podemos seguir adelante , Y ,
um quiero decir, ya no necesitamos esa función de éxito.
72. Paginación: De acuerdo, entonces ahora lo que vamos a hacer es que vamos a tener una función de paginación, y esto es algo que vas a ver también a menudo en los sitios de blogueo. Y cualquier pitch que cualquiera cuando estas aplicación que tenga páginas de contenido, Um, vas a querer hacer esto. Entonces la forma en que hacemos eso es mediante el uso de una función incorporada de, um, de bloqueo secreto que te permite hacer una especie paginada de como,
um, um, um, acceso o consulta a la, um, al sitio. Entonces veamos cómo podemos hacer eso. Entonces lo primero que vamos a hacer es ir a bloquear vistas, y vamos a poner una constante aquí en la parte superior, que van a ser posts por página. Um, establecer constantes en el controlador real es algo que está bien siempre y cuando solo afecte a ese controlador. O que vistas sea por qué toda la gente simplemente prefiere tener esto en un archivo de configuración si
va a afectar a más de 11 sección. Pero está bien tenerlo aquí. Um, porque solo va a ser una pareja para este archivo en particular. Entonces lo que tenemos que hacer aquí es que necesitamos agregar un ah, básicamente en un parámetro de página en el propio euro para que, um, secuela Alquimia pueda entonces tirar de la adecuada, um, el tipo adecuado de, me gusta página de índice. Entonces veamos cómo hacemos eso. Vamos a tener Vamos a tener que puntos de entrada ahora dedo del pie de este controlador. Entonces disfunción más bien, que va a ser índice o índice barra un número como 1234 Y ese va a ser el
número de página . Y aquí vamos a tener página igual a uno. ¿ Qué significa eso? Significa que si los índices llaman sin una página, como en cuando cuando lo llamas por el índice o simplemente una barra entonces la página se va a establecer automáticamente dedo del pie uno. De lo contrario, tomará cualquier número que se esté pasando aquí en el en la ruta. De acuerdo, Um, entonces lo otro que necesitamos adherir es ahora una función paginada al final de la consulta. Y así hacemos lo siguiente, um, Paige y publicaciones por página y, um, y luego 1/3 parámetro llamado fallas. ¿ Y qué hace esa carne falsa? Significa que si no existe una página que es el año pasado, entonces devuelve un 44 Si está establecido en verdadero y si es falso, entonces no comprueba por eso. Él sólo Si es el tipo de un mal, um, tipo de número de página, entonces es sólo devuelve una lista vacía. Entonces prefiero simplemente devolverlos a arrendar y no tener un 44 Um, así que eso es todo. Y ahora tenemos que pasar. Um ah. Entonces básicamente, ahora, este post, um, objeto tiene un ah, un nuevo set off, off o una lista fuera de objetos llamados elementos. Entonces vamos a ver cómo podemos algo así como, manejar eso en la plantilla real, porque ahí van a la página de índice. Algo que quiero hacer es que quiero tener un h ref for,
um para el título del bloque para que puedas volver a los de la página principal. Um, haces click en eso en ese nombre, y eso sería como una forma de volver a la primera página si tenemos paginación aquí. Entonces OK, eso es eso, um y entonces vamos a tener básicamente necesitamos cambiar los,
um,
los um, posts aquí en su lugar. Off post. Vamos a publicar, vamos a pasar artículos. Entonces ahora este es el nuevo tipo de como es solo una lista de personas que están dentro de esa página. De acuerdo, um y, um, veamos aquí. Um, queremos tener un ahora que tenemos Queremos tener una paginación como,
uh, uh, especie de, , digamos, mi comida o bien, así que eso sería, Pongámoslo aquí en, um, cerca del fondo. Y cuando llamo a esto el post paginado y es lo que nos va a permitir especie de, como mostrar las páginas anterior y siguiente. Um, y también puedes hacer otras cosas mayores aquí dentro, pero me voy a quedar con las anteriores impuestas. Entonces vamos a comprobar si los posts tienen anterior que es este tipo de función auxiliar que tiene el objeto de paginación. Entonces, um, vamos a tener lo siguiente. Vamos Y si es así, voy a poner aquí, um h ref igual a, um, Euro cuatro página de índice, y luego voy a pasar. El pà ¡gina es igual a los posts. Número anterior prv numb. Entonces eso está automáticamente incorporado en el dedo del pie. Ponga el número de la página anterior en el en el euro y luego vamos a tener, um, para gustar, pequeño como nuestras flechas y sostén. Ahí vas. Y luego vamos a poner puestos más nuevos porque esto va de más pequeños, demasiado grandes. Um, y ,
um, si no tenemos, um, publicaciones
más nuevas, eso significa que estamos buscando la primera página. Entonces podemos hacer otra cosa aquí, bien, Els y, uh, gente que más aquí para que se vea mejor otra cosa. Simplemente voy a mostrar este tex sin el hipervínculo. Um bien. Y, um y luego ponemos ah, pequeño separador aquí, y luego voy a hacer básicamente lo mismo. Entonces voy a copiar y pegar la mayor parte de esto, pero voy a cambiar un poco. ¿ Qué viable? Nosotros revisamos. Por lo que ahora vamos a comprobar si los posts tienen siguiente en lugar de anterior. Eso es lo siguiente. Entonces vamos a mostrar su página de índice Euro cuatro, y luego esto va a ser el siguiente entumecido, y voy a poner aquí posts más viejos perfectos. Para que se cuide que veamos si esto ya funciona. Déjame Vayamos al administrador, entramos a la página principal y veamos eso en acción. Perfecto. Entonces ahora veo que hay más nuevo Post es No lo es. No es hipervinculado sino publicaciones antiguas ISS. Y si ves el tu l ah, es Index, eso también. Y si hago clic ahí Wow, índice tocó dos. Eso es ah slash a. Más bien, eso funciona bastante bien. Um, así y ahora tienen puesto más nuevo encendido y,
um, um, y postes más antiguos apagados. Eso significa que sólo tengo, digamos cuatro, ¿
verdad? Sí. Cuatro, um, artículos. Entonces sí, esto está funcionando muy bien. Y, uh, vamos a lo mismo para el para el administrador. De acuerdo, entonces, um, vamos a tener que hacer lo mismo. Algo similar aquí. Entonces vamos a hacer lo mismo camino arriba. Ah, truco con admin aquí, y vamos a tener una página, um, igual a una onda. Por último, voy a Pagine ocho lo mismo aquí con los posts. Y, um, eso es todo en el lado del controlador. Veamos en el lado admin. Entonces vamos a hacer lo mismo. Ah, tal vez año treff. Estás para admin, Y luego golpe me metió aquí, y vamos a tener que el post sean los artículos de los posts, y yo voy a copiar y pegar la cosa de la paginación aquí. Y podríamos pedirlo La mitad de esa cosa en un en macro. Pero, um sí, por ahora, esto es a ello. Aquí, Um, así que eso se ve bien. Publicar artículos. Sí. Y cuatro el Sí, se ve bien. Entonces intentemos, um si tenemos algún error y vayamos a la página de administración Y ahora tenemos imaginación. Perfecto. Entonces eso funciona realmente bien. Y si hago clic en el Oh, espera, estoy estableciendo índice aquí. Debería ser admin. Me preguntaba qué había pasado ahí,
Um, Um, porque en su lugar estaba vinculando dedo del pie la página del índice. Entonces volvamos. Recargar. Post admin mayor. Perfecto. Aquí míticamente. Me llevan a la página de inicio de administración. Impresionante. Eso es paginación. ¿ En serio? Nos vemos de nuevo chicos. No tienes idea de lo difícil que es esto si quieres hacerlo de forma manual. Hay mucho trabajo que yo que hice a lo largo de los años para configurar la paginación. Entonces estás viviendo en una gran edad, Um, que las cosas son mucho más fáciles para nosotros, y podemos concentrarnos en construir las cosas realmente importantes. Entonces eso es todo para esta lección. Um, y, um, lo siguiente que vamos a ver es,
um, um, agregar fotos del dedo del pie estas para disponer. Entonces vamos allá
73. Instalación de Installing de flask: De acuerdo, Así que ahora, um ,
en esto ,
um, vienen algunas lecciones. Vamos a estar agregando una foto o una especie de imagen al post. Y para eso, hay una biblioteca bastante buena para que no tengamos que reinventar la rueda o hacer algo
así como mucho fuera de las cosas personalizadas que necesitas hacer. Um, porque siento que, um, es un problema que se ha resuelto muy bien hasta ahora, así que no siento que debamos hacerlo de la manera manual. No obstante, um, si quieres explorar eso, um, siempre
es una especie de fondo para tratar de construirlo tú mismo el todo, como imagen de proceso de carga y, ya
sabes, especie de, um, manejo del archivo desde el formulario etcétera. Entonces hay algunas cosas que son útiles para aprender, pero, um, no
creo que sea un Es algo que debería construir desde cero. En este momento,
creo, um, hay ah, hay mejores soluciones por
ahí y ah, en vez de que deberías, como, concentrarte en, estoy construir otras cosas que no es, um, ya
sabes, la imagen de cargar pieza habiendo dicho que, um, normalmente lo que usamos en el lado plano para imágenes es un equipaje llamado carga de matraz, y es realmente bueno. Vamos a ver cómo funciona. Um, el único problema fue que no funcionó con Python tres. Y sorprendentemente, um, el autor de este paquete o esta biblioteca ha sido como un mi A y, um, trabajando en otras cosas y simplemente no tuvo tiempo para continuar,
um, um, actualizando ella. Y, um, entonces yo estaba como, ya
sabes, debería simplemente,
como, como, construirlo a partir de tractor? ¿ Debo tratar de seguir usándolo usando python tres? Y así lo que terminé haciendo fue, um cambié la biblioteca con, básicamente la arreglé para que pudiera trabajar con desde tres. Y he publicado eso en el, um Aquí están los cambios reales. A pequeños cambios realmente no es nada importante, pero , ya
sabes, el autor no lo ha estado actualizando como dije, así que lo puse aquí en mi get hop. ¿ Y qué? Nosotros lo vamos a hacer. Este es un buen tipo de ejercicio como para ustedes chicos es en realidad vamos a poder agregar esta biblioteca sobre los requisitos. Txt están usando una especie de como un ah, consigue tener cuenta. Um, que no es la gente regular instala biblioteca. Entonces vamos a hacer eso, Um, y te daré el euro para el para la biblioteca. O puedes simplemente teclearlo junto a mí. Pero empecemos a hacer eso, ¿de acuerdo? Para que hagamos esto, vamos a ir a requisitos abiertos. Txt. Y al final,
um, um, vamos a añadir el siguiente guión e y luego espacio obtener pérdida salida el PS,
uh, uh, conseguir tener dot com slash desde cero eu slash petaca subidas y luego, um hashtag a EG es igual a cargas de matraz. Entonces esto le dice a la gente que vas a estar instalando una biblioteca, que no está en la gente principal. Ah, repositorio. Pero en realidad lo estás sacando de otro lugar. Y mientras eso sea un get, um ah, consigue repo. Está totalmente bien. Entonces es cuando hago ejercicio. Entonces vamos ah, vamos a instalar esto. Entonces la forma en que hacemos esto, um, asegúrate de tener tu ve envidia al principio habilitar a la gente todavía holandesa, nuestros requisitos txt Así está descargando todo. Y ahora dice que instaló con éxito subidas planas. Entonces cuando empiece a configurar esto, Ok, entonces el siguiente paso que tenemos que hacer es dinero para agregar algunas constantes a la a la configuración tres y y veamos cuáles son esas. Entonces, ah, ajustes ser ¿Por qué? Caso? Vamos a añadir lo siguiente,
um, um, subido fuera de destino de imágenes cargadas. Este es básicamente el camino, um, en el servidor donde vas a subir las imágenes cuando el usuario las cargue. Entonces en este caso, note que voy a usar mi propio camino. Por lo que necesitas reemplazar esto por tu ruta en tu servidor. Y es básicamente, um veamos, flats blawg,
uh, uh, imágenes
estáticas. Entonces necesitamos crear Ah, carpeta para esto en el, um, en tu en tu camino. Correcto. Entonces dentro de estática. Um, déjame minimizar esto. Um, entonces estamos estudiando Bueno, aquí no tenemos estudio. De acuerdo, entonces necesitamos crear esa carpeta. Um, Así que vamos a crear ah, nueva carpeta. Vamos a hacer estática. Y luego dentro de esa carpeta, vamos a crear una nueva carpeta llamada Imágenes. Está bien. Y como podría recordar de la sección anterior estática Es un tipo especial de, como directorio para matraz. ¿ Dónde sirves? Um, algo así como, ah, contenido
estático, como imágenes javascript, ese tipo de cosas. Ahora necesitas comprobar si estás en flash block, hacer un PWD y comprobar que este camino se parezca a este camino. Y sí, se
puede ver aquí es casa una bendición para pisos de espacio de trabajo, blawg. Y luego también comprobar que existen imágenes estáticas. Entonces lo haces es estático. Haces una pestaña. Para que nuestros campos y luego imágenes para que eso esté bien. Eso funciona bien. Y luego el otro ajuste se suben las imágenes. Tú eres yo Y en este caso, es como sirves esas imágenes. Y sólo vamos a llamar a esto imágenes estáticas. Eso es como el euro que debería preparar terminar cualquier imagen que vamos a estar sirviendo. Entonces eso es eso, Um, así que ahora sigamos y empecemos a configurar el, um, el conjunto de subida en el en él. Entonces ahora aquí en él, um, vamos a añadir algunas cosas aquí. En primer lugar es de matraz, uh, subidas que sube, importan off load set, peine figure uploads e imágenes. Está bien. Y, um, debajo de Ah, ver desde subidas de matraz yendo un área off load set coma. Y aquí vamos a hacer en la sección de imágenes, y vamos a hacer imágenes subidas igual a off load, set off images, off type images. Eso imágenes subidas básicamente define qué tipo de imágenes vamos a ser. Um, vamos a estar de carga Y cómo tose nombre ese conjunto, puedes tener múltiples conjuntos, como, por ejemplo, imágenes. Estoy llamando a las imágenes de publicación, pero podrías tener otra para,
como, como, perfiles de
usuario, y podrías llamar a esos perfiles. Y esto básicamente tiene que ver con donde, um, el sistema suben los pisos, sube tiendas que hicieron un dato sobre lo anterior la imagen. Um, entonces lo siguiente que vamos a hacer es configurar las cargas, y tenemos Le pasamos la app y las imágenes cargadas Ah, viables que acabamos de crear. Y eso es todo. Um, así que ahora la forma en que vamos a, um, almacenar que esas imágenes van a estar en un campo dentro del modelo fuera del
poste, y básicamente lo que almacenado es el es la imagen de ruta. Um, así que hagamos eso s para que vayamos a ir a los modelos de sangre de los pies. Y así, primer lugar, necesitamos importar DB y ahora subidas imágenes. Um, y en el, um, en la clase, uh, en el poste debajo del cuerpo que vamos a tener en campo de imagen y esa imagen va a ser una
columna DB . Ah, off type string off. Voy a poner 255 por si acaso no necesitamos tanto, pero eso probablemente no tiene sentido. Y luego en el en él, um, voy a añadir una propiedad. Um, veamos aquí antes de esto, um, antes de la y en realidad así que voy a hacer que sea una propiedad fuera de este disco. Por lo que hay un decorador La propiedad fría y la propiedad significa que es tu tipo de como crear uno de estos, como la imagen del cuerpo del título. Vas a crear uno nuevo, pero que es que se calcula, uh, dependiendo de en qué registro tu. Entonces es un Es una buena manera de modificar el tipo de, ¿
como qué? Pero se vuelve del objeto sin tener que hacerlo, En realidad, ya
sabes, no hace falta que exista donde puedas hacerlo sobre la marcha Y esa propiedad que vamos a llamar fuente de
imagen. Entonces fuente de imagen es ah, es una propiedad fuera de esta clase y qué hace Devuelve las imágenes cargadas. Tu l fuera de los registros imagen. Um ah, campo. Eso es sólo base de datos. Entonces como puedes ver ahí, um, hay, um va a haber algunos, como cálculos hechos porque no va a devolver sólo el,
um, um, sólo el registro de imagen, pero va a pasar por las imágenes subidas, que es un matraz. Subidas. De acuerdo, así que eso es todo. Por lo que necesitamos ahora hacer una migración para poner esas cosas cambios en la base de datos. De acuerdo, entonces vamos a abrir la terminal. Y cuando hago pitón manejo feliz. Por qué DB migrar. Y, uh, vamos a ver cómo se ve eso. Perfecto. Por lo que generamos de 9 a 7. Entonces es este archivo aquí mismo. Vamos a comprobarlo. Y, um, claro, estamos consiguiendo una imagen de columna de post aquí, así que eso va a ser creado. Um, y luego post vida. Ves, eso es algo así como el bicho del que estamos hablando también con su autor, que es como si siempre cosas fuera de lingotes. Es como que necesita dedo del pie modificarlos de nuevo. Pero de nuevo, no
es algo que afecte nada. El importante es éste de aquí, Que es en imagen. Um, se va a crear
columna, así que eso se ve bien. Está cerca de eso, um y así vamos a hacer la actualización a la base de datos. Por lo que por teléfono gestionado B Y d b Oh, genial. Perfecto. Entonces todo se ve bien y Ah, así que ahora deberíamos poder continuar,
um, um, nuestro trabajo y eso ahora es empezar a trabajar en el post de entrevistas.
74. Agregar blog de imagen: De acuerdo, entonces ,
um, antes de que hagamos eso, las cosas de cualquier vista, vamos a ir a los formularios porque necesitamos agregar esto al formulario. Y así la forma en que vamos a hacer eso es la siguiente. Um, necesitamos agregar una línea Ellos aquí para campo de archivo lo vamos a hacer desde frasco wtf archivo de importación de archivo, campo y archivo permitido. Y, um, entonces en el formulario de correos vamos a agregar, um, antes del título, vamos a tener una imagen que va a ser un campo de archivos, y entonces va a ser, ah, el nombre del formulario. El fuera del campo va a ser imagen. Y luego, validadores, vamos a tener el siguiente Ah, archivo permitido Así que en realidad podemos filtrar qué tipos de imágenes podemos aceptar. Entonces vamos a hacer clavijas J y P y G por ahora. Um, y luego, um, el mensaje de aire para eso va a ser sólo imágenes. Y eso está cerca. Eso perfecto. Entonces tenemos nuestro post, uh, forma con una nueva imagen. Um ah, algo así como, ah, campo para empezar,
um, um, conseguir que nuestras imágenes sean aceptadas. Entonces ahora lo último que necesitamos hacer es empezar a trabajar en las vistas en bloque, pero veamos cómo se ve eso en el formulario real. Entonces ahora necesitamos dedo del pie modificar la forma de bloque, ¿verdad? Para que lo sea en el templo en realidad el post. Ahí vas. Para que nos gusta añadir, ¿el nuevo el nuevo campo para la imagen? No obstante, hay un pequeño cambio que tenemos que hacer para que los formularios puedan manejar imágenes. Se tiene que especificar el tipo según. Y eso se ve así. Usted haciendo tipo de codificación, datos de formulario
multiparte. Ahora, lo que eso significa es que, um usualmente lo que hace HTML o htp más bien es eso? Cuenta con un separador. Y dice, desde este punto hasta este punto, vas a conseguir,
como, normales, Ah, Ah, campos
normales para datos como,ya
sabes, ya
sabes, la categoría de cuerpo del título como los campos de texto. Y luego hay un diseño de separador cadena real que busca. Y luego, a partir de ese momento, es una imagen, que es algo así como codificada, um para que el servidor pueda leerla. Entonces eso es lo que hace esa multiparte. Entonces y ahora sólo tenemos que sumar a este campo. Um necesitamos tener una imagen de forma estando ahí. Perfecto. Entonces vamos a ver si tenemos algún error. No tenemos aire, así que recarguemos esto. Y ahora tengo una imagen. Uh uh, elegir archivo. Entonces si elijo presentar aquí, dirá:
Oh, Oh, ya
sabes, cuál. ¿ Qué imagen quieres, como, seleccionar? Y que podamos seleccionar cualquier misión ahí, y luego, um, entonces lo será Se enviará junto con el puesto. Entonces vamos a trabajar en cómo recibir esa imagen real en el en el Post, y eso está en las vistas de bloque. Entonces vamos allá. Una cosa que me acabo de dar cuenta es que hicimos esta propiedad para la fuente de imagen, pero no,
en realidad,
um,
configuramos en realidad, um, el, um, el campo de imagen para la unidad para, um, whatchamacallit. Necesitan lista adecuada. Por lo que necesitamos encender una imagen aquí. Y así vamos a hacer imagen igual a ninguna. Eso significa que si es si quiero decir quiero decir no se pasa una imagen. Eso está bien. Todavía deberíamos tener el poste de bloque creado. Por lo que es opcional una cosa opcional. Entonces, um, así entonces después de categoría eso se requiere categoría. Entonces después de categoría, nos vamos a hacer nosotros mismos. Esa imagen es igual a imagen. Entonces esa imagen se va a poner de pie esto, Um uh, así que esta real, ya
sabes, propiedad. Y y en realidad es este este campo de imagen aquí,
Vale, Vale, Pero cuando solicitemos fuente de imagen, ese va a ser el real que subiste imágenes o pisos Se están configurando las subidas. Entonces OK, ahora estamos listos para empezar, um, trabajar en el en la vista real. Entonces vamos al dedo del pie,
a los vista blogueados, y empecemos a trabajar en eso en el formulario de correos extranjeros. Pero antes de hacer eso, necesitamos dejar un par de cosas en la parte superior,
um, um, de matraz. Ah, necesitamos agregar,
um, um, el objeto de solicitud aquí. Y también necesitamos de pisos blogueados, importar imágenes cargadas. Perfecto. Um, por lo que ahora vamos a ir en la sección de correos y él formuló en presentar. Aquí es donde vamos a revisar la imagen. Por lo que la imagen se envía junto con la solicitud. Entonces decimos que las imágenes solicitan que los archivos para obtener imagen. Ese nombre de imagen es el mismo nombre de campo de imagen que dijimos en el formulario. Y entonces vamos a decir que hay un nombre de archivo que va a ser nulo. Um, así que vamos a hacer un intento aquí, así que vamos a probar algo, y si no funciona, entonces hacemos un mensaje flash. Pero, um, así hacemos nombre de archivo igual, imágenes
cargadas, esa imagen segura. Entonces que las imágenes, esta imagen aquí y lo que las imágenes cargadas van a intentar es guardarla en la carpeta de imágenes estáticas . Y luego si si es así, um si tiene éxito, entonces le devolverá eso a la familia. Y si falla, entonces vamos a decir flash. Ah, la imagen. No fue una hinchada. Está bien. Y, um, entonces finalmente aquí en el poste, vamos a pasar lo siguiente después de categoría, y Ah, así que vamos, um, místico eso. De acuerdo, entonces el boleto hay algún error s Hasta ahora, tan bueno. Iba a ser bastante emocionante si conseguimos que esto funcione. Um, así que déjame cuando era un archivo. Por lo que he descargado aquí el logo del matraz de la web. Entonces ahí tienes, y luego voy a poner el título es prueba de logotipo de matraz imagen. Esta es nuestra primera prueba con una imagen. Y, um, déjame simplemente encender la consola porque quiero ver si conseguimos alguna en categorías de años. Frasco, y eso debería ser todo. Entonces, veamos qué pasa aquí. Post. No. No se reportaron errores, y parece que se publicó correctamente. Entonces si vemos unas imágenes estéticas Oh, mira eso. Tenemos nuestro matraz más bajo ahí. Eso es increíble. Entonces ahora tenemos el logotipo del matraz en esto en la carpeta en nuestra carpeta de imágenes estáticas, y voy a revisar rápidamente en la base de datos recibida que eso realmente pasó. Entonces, vamos a ver. Mostrar. Yo quiero ver si estoy en el lugar correcto. Sí. Por lo tanto Seleccione estrella de poste. Um, y ya veo aquí imagen Fleiss, prueba
local. Y veo a Fleiss. PNG. Por lo que debe ser lo siguiente. Y significa que pasó correctamente a la a la a las bases de datos. Bueno, tan buen trabajo. Eso es increíble. Entonces ahora tenemos que hacer es que necesitamos mostrar estas imágenes en el en los artículos reales, así que ese va a ser nuestro próximo, menos que
75. Ver el artículo de índice de imagen: De acuerdo, así que vámonos. Y, um, eso se detiene de cerca. Uh, creo que nos estamos llenando de nuevo con un montón de grifos. Y, um entonces eso es lo primero que quiero ver. Si puedo mostrar está en el real en el índice de sangre, um, html. Y la forma en que voy a hacer eso es que voy a tratar de, um, hacerlo para que el, um en el post real,
um, um, voy a un tipo de,
como, como, separarme en el de Dave. Uno va a ser para la imagen del lado izquierdo y otro para la imagen del
lado derecho . Entonces vamos a hacer eso es lo siguiente. Entonces este rígido, Mira, tenemos a Steve aquí, así que vamos a decir, Post item y voy a llamar a esto una fila para que, um, bootstrap sepa que hay una subdivisión pasando aquí, por lo que tienen clase igual col N d nueve. Entonces va a ser la pieza más grande de ella y tierra y que aquí, y quieren hacer otra clase de Dave igual llamada en los tres. Y eso suma 12. Y quiero decir que si,
um, um, se supone que
son imagen, entonces hacer fuente de imagen es igual, y aquí vamos a usar esa,
um, um, esa propiedad de fuente de imagen que agregamos en el, um, en el modelo. Y voy a decir que la altura es igual a 60 píxeles. Entonces dije que se esconden a una constante, y cuando lo pongo una bonita clase fuera de imagen a tierra para la cual es nuestra utilidad de, uh, correa
desmenuzada. Y creo que eso es todo. Perfecto. Entonces veamos si vemos eso, um, ahí dentro. Vamos al dedo del pie. El índice de la página. No. Y para nosotros, Mason y cuatro bloquean en correo electrónico sexista. No, no
tuve el final de la imagen post. Correcto. Y si ahí vas, ves? Se ve bien. Um, y la imagen es muy pequeña ahí dentro. Vea cómo se ve la fuente de imagen. Ah, no
lo está imprimiendo. Enorme fuente igual. Vamos a ver aquí. Ah, tengo un tipo. Su fuente de imagen. Ahí vas. Muy bien, intentemos eso una vez más y nada. Es lo que pagaste fuente. Ah, imágenes
estáticas. Termo. De acuerdo, así que esto es Parece que me falta un corte después de esto. Y eso podría ser por la configuración B y. estoy poniendo el mal. Están todos aquí, así que parece que necesitamos añadir un euro después del esto. Ah, esta definición. Por lo que esta vez deberíamos ser buenos. A ver. Recargar. Y ahí tienes. Por último. Um, así que eso se ve realmente bonito. Um, en realidad
es, um eso está mucho fuera de carácter a la a la a la a la página principal. Pero ahora no tenemos la imagen en el poste de bloque real, así que arreglemos eso. Entonces vamos al artículo, número ext. Correo electrónico. Y vamos a añadir el, um antes de que el título de la publicación sea a un cheque si post imagen y ustedes chicos. Ahora, entiendo por qué sigo haciendo este final cerca en la cuadra porque
a veces tengo muchos problemas . Como terminar las cosas como me olvido. Entonces voy a hacer fuente de imagen igual. Ups. Um, post imagen llagas. Y luego voy a decir altura aquí. Voy a ponerlo un poco más grande. 300 píxeles en clase es imagen a su alrededor. Perfecto. Entonces eso debería ocuparse de eso. A ver si en años no tenemos errores. Entonces ahora recargo esto y estoy recibiendo un error aquí en la misma cosa. Es fuente de imagen. ¿ Es un local naufragado? Eso es hacer eso. Eso es raro. Bueno, ahí tienes. Ah, se ve un poco grande. Supongo que es porque soy una talla más grande. Supongo que no. Entonces pongamos eso un poco más pequeño. Eso es un 150 píxeles y ver cómo se ve eso. Sí, eso es un poco mejor. Se puede jugar con él. Um, pero eso parece violencia. Y Ah, así que eso es todo. Tenemos nuestra,
ah, ah, vista de
artículo con la imagen y, um, y parece que todo está funcionando perfectamente bien. Entonces felicitaciones es esto. Ah, esta es una gran empresa. Y, Ah, lo siguiente en lo que vamos a estar trabajando es, um, vamos a estar haciendo la edición del post, porque a veces quieres, como después de guardar un náutico, que quieras puede ser capaz de editarlo. Entonces veamos cómo hacemos eso.
76. Deleting de artículo: De acuerdo, así que ahora vamos a hacer, um, en la funcionalidad fuera de edición o el liderar un post. Um, y eso lo vamos a ver en la vista de artículos. Entonces intentemos empezar a hacer eso. A lo primero que quiero ir es al artículo, um, plantilla. Y voy a añadir después del título,
um, um, un pequeño enlace que dice si la sesión no consigue el autor. No, es autor. Perdón
, es oferta. Entonces déjame intentar ir de viaje con la chica para tenerlo post yo d igual posteado el así que
voy a pasar. Entonces esta, um, ruta, que aún no he creado un, um publicaron el que ya tengo desde el propio post. Entonces que tienen editar aquí, y luego voy a tener otro. Sí. Similar a esto, que es, um, la liga y, um, algo que ustedes chicos, um, deberían saber el en este día y edad, almacenamiento es tan barato que no tiene sentido eliminar realmente las cosas. Lo que haces es marcarlos, y creo que dije esto en el pasado. Marcas su vida, bandera o estatus para ser falso. Entonces, um, porque Al final del día, cuando dejas registros,
puedes afectar, um, relaciones, relaciones, claves
extranjeras, cosas de eso naturaleza. Entonces es mejor que construyas tus aplicaciones. Um, basado en Not que no lo creyera, sino más bien marcarlos como ah, eso no es vida. Entonces vamos ahora a construir,
um, um, esa funcionalidad para editar, um, en las entrevistas. Entonces eso es lo que el principal. Primero, Porque siento que, um, podemos ver cómo va a funcionar en general. Y luego haremos el, um, el de edición. Entonces para el delete, voy a hacer lo siguiente, Así que voy a hacer una siesta ruta la elite y luego un post lady y post I D. Y voy a tener autor requerido para esto. Incluso puedes pegarle a esto si es si no eres otro. Entonces el tardío va a tener puesto I d Necesitamos tener eso. Por lo que no es un opcional. Entonces lo que vamos a hacer es que vamos a tener post equals post query filter. I d igual post I d. primero o 44 Así que si no lo encuentra, entonces devolverás un 44 Si no entonces regresará el primero. Entonces solo voy a poner post vida es igual a falso. Y entonces sólo voy a hacer un commit, así que eso es realmente sencillo. Um, Y luego voy a hacer artículo flash borrado y mandar eso de vuelta al dedo del pie. El administrador. De acuerdo, así que eso fue bastante sencillo. Um, una cosa que quiero hacer antes de que fuéramos como, um, podemos atestiguar. Esto es voy a, um voy a agregar algo en el admin en el html a tipo de, como mostrar los artículos que se han borrado. Entonces, um, vamos a bloquearme en mi próximo correo electrónico. Y así voy a decir en la lista del título de la entrada, Déjame agregar algo aquí que diga, si no publicar la vida, entonces vamos a mostrar entre paréntesis borrados y bien, así que vamos a tratar de ver si funciona. Um, no. El aire está ahí, así que voy a no quiero dejar que éste cause demasiado bonito. Vamos Ah, que el 1er 1 Ah, post I d conocido. Ah, lo
tengo porque no tenemos la función de edición. Naturaleza muerta. ¿ Verdad? Está bien. Entonces, um, ¿qué podemos hacer aquí? Vamos a sacarlo, y entonces ¿lo vamos a añadir? Saquemos eso seguro y recarguemos. De acuerdo, Entonces Ah, ahora tenemos nuestro botón de borrar aquí. Por lo que dice el liderato cuatro. Entonces esos deberían ser los cuatro. Ahora, déjame ir en el admin 11 2do Y en realidad, voy a aumentar el número fuera, um, fuera de artículos porque quiero ver más artículos en esa lista. Entonces Ok, entonces este es el que vamos a borrar. Termo. Realmente increíble. Entonces voy a ir a presionar, borrar y filtrar Va a un argumento esperado. I d ah, Vamos a filtrar post consulta filter por no filtrar estancia hace. Entonces intentemos eso otra vez. El liderato. Perfecto. Por lo que me sale un mensaje flash son ir el líder. Y como se puede ver ahora, estos este último artículo nos está mostrando el líder. De acuerdo,
Entonces, ¿qué pasa cuando voy a la página de índice? ¿ Ahora? Todavía veo ese artículo halagado, realmente increíble ahí, así que necesito ocuparme de eso. Y la forma en que hacemos eso está en el índice. Um, en lugar de eso
vamos a buscar todos los artículos. Yo sólo voy a decir, Consígueme, Um, consígueme los artículos Que viven igual a verdad. De acuerdo, entonces ahora si recargo la página, no debería ver eso último. Y ahí tienes. A ver cómo funciona eso. Para que puedas cambiar margarita. Aquí se puede ver. Hay un primer filtro cambiante para luego ordenar por y luego paginado. Entonces eso se llama cambio de mar. Porque es ah, puedes hacer puntos y puntos y conectar diferentes operaciones. Entonces eso es crítico. Impresionante. Entonces eso está funcionando bien en el administrador. Veo el post y en el sitio de la vida. No lo veo. Entonces ahora, um, veamos cómo podemos hacer la parte de edición, que es un poco más de trabajo. Pero no debería ser tan malo, porque vamos a volver a agregar eso, um, no una cosa. Yo que teníamos aquí. ¿ Dónde está? Sí, aquí. Y guarde eso. Y ahora voy a tener las vistas que voy a tener editar para que no se queje de ello. Por lo que estoy orgulloso de ello, y luego lo mismo y post i d. Y entonces también requirieron son edit post. Yo Ok, entonces, um, veamos. Tenemos que hacer uh, dos métodos se imponen, y esto es lo que estoy pensando. Entonces, ¿saben qué? Um, algo así como llegar a editar un artículo. Podría, um, básicamente, um, si lees un artículo, significa que si haces clic aquí y tú Oh, bueno, cuando haces clic ahí y ves el artículo renderizado ,
um, si pudieras hacer click en
él, debería llevarte a una especie de forma como ésta, ¿
verdad? Pero con los valores apagados, se llenó aquí, sin embargo, no lo quiero de nuevo. El director seco, correcto. No quieres estar haciendo estos dos formularios y creando un nuevo formulario de publicación y un formulario de edición y manteniendo esos dos. Y luego si agregas un nuevo campo, entonces necesitas agregarlo en el formulario para. Entonces eso es algo así como no muy escalable. Y, um, y también no solo escalable, sino que es solo en contra, como, desarrollo
realmente agradable. Entonces lo que vamos a hacer es que realmente vamos a usar la misma forma que tenemos para el artículo,
este, este, el formulario de post. Pero vamos a reemplazarlo por los valores fuera del artículo si lo estás editando y
vas a,
um, um, verlos vacíos si estás creando un nuevo un nuevo un nuevo artículo sobre la forma en que iban a decirle al sistema, cuál de los casos de uso de herramientas que vamos a utilizar es pasar por alto algo llamado acción. Entonces la acción está en ello, entonces la forma tipo de similar renderiza el uso de la misma forma. Se renderiza el contenido. Y si no, va a ser acción igual a nueva. Y eso significa que es un artículo totalmente nuevo. Entonces hagámoslo aquí dentro. Por lo que primero necesitamos buscar el puesto. Por lo que se opuso filtro de consulta por. I d igual post. D punto primero o por cuatro. Entonces mira esto. Vamos a utilizar el formulario el formulario de correo el mismo formulario. Pero mira esto. Podemos hacer objeto igual. Post object es una especie de cosa de construcción que forma la mitad. Y lo que estás diciendo aquí es, como, sólo una señal. Todos los campos en el formulario dedo del pie las cosas adecuadas que estás obteniendo de la base de datos fuera este post, suponen éste de aquí. Entonces eso es algo bastante útil, um, y muy poderoso. Y así está el formal a formulario validar. Pero vamos a saltarnos eso. Entonces, ¿ves cómo se ve eso? Es cuando regresará. Plantilla de renderizar. Um, el registro de franqueo hembras Sin embargo, que estamos usando la misma tentación ahí forma iguala forma, y luego post igual post. Y por último, acción es igual a ella y ver cómo estamos pasando la publicación ahí. Um, así que vamos a ver si eso funciona. Déjame ir al dedo del pie sobre el artículo ártico aquí. Veo editar. Mira eso. Por lo que he precargado el el título, el contenido, la categoría una cosa que soy no recuerdo si necesitamos pasar el post. Um, ¿qué se ve eso aquí? Su imagen de forma? No estoy seguro. Ah, sé por qué aún no hemos visto eso. Um, así que lo único es que ves cómo la imagen aquí es como, um, algo así como, renderiza que era una imagen nueva. Pero, ¿qué pasa cuando sí tengo una imagen? Si lo tuviera, ver que no haya matraz. Todo el logo de los pisos no está ahí. Es algo así como, difícil de decir. Entonces lo que realmente estoy haciendo, él es realmente voy a cambiar la forma para que las imágenes pary renderizaron. Entonces vamos a ver cómo se ve eso
77. Edición de artículos: Entonces hagamos algunos cambios en el,
um, um, en el poste de bloque. Um, ex, um y esto es lo que vamos a hacer. Entonces recuerda, tenemos esta acción igual a Neil. Entonces voy a decir que si la acción es igual a nueva, entonces haz la siguiente impresión Nuevo bloque post, um, facturas imprimir, um, editar Black Post. Entonces sabemos con certeza eso es lo que estamos haciendo y luego y esto. Y, um, también
necesitamos cambiar a dónde envió eso. Está bien. Por lo que entre copiar y pegar ahí. Entonces si la pose del bloque, si la acción es nueva, entonces estás enviando puntera post. De acuerdo, Pero si estás editando, en realidad
quiero que me lo envíes de vuelta, a la edición y con las ideas de post. Entonces mira, ese es el primer dato de post que necesitamos agarrar de ese post. Ahí es donde estamos pasando poste. Entonces que a esa plantilla, se supone que d igual a post, creo y Y bien, y ,
uh, pongamos esto aquí. Perfecto. Y lo último es, bueno, no la final. Entonces tenemos dos cosas. Una es la imagen, ¿verdad? Entonces queremos renderizar la imagen si hay una imagen para que el usuario pueda ver Así que voy a decir si Post se está pasando y post imagen es ex presidente, entonces ¿por qué hago post y post imagen versus solo si post esa imagen? Bueno, lo que el problema es que si Post no se está pasando,
um, um, imagen de
cartel me va a dar ah, va a ir, como no esto es un error. No puedo lidiar con esto. Pero python tiene esta cosa muy interesante con ifs, que es que si la primera, um, expresión es falsa, entonces ni siquiera evalúa el resto. Y se puede salir de ahí. Entonces eso es algo muy útil para que ustedes tengan. Y recuerda eso, Um, Entonces si quieres tener algo que quieres ver,
como, oh, oh, ¿este objeto tiene alguna propiedad en él? Pero no estás seguro de si el si los objetos van a estar disponibles en primer lugar, puedes hacer este pequeño truco si post no es rápido y se apaga y él no lanza error y luego comprueba. Si se supone que ellos y él se ha opuesto a la imagen, entonces vamos a renderizar la imagen. Entonces eso es eso. Y así vamos a renderizar la imagen aquí para que el usuario pueda ver qué imagen
tiene originalmente . Y si quiere cambiarlo así fuentes de imagen alboroto publicar una fuente de fusión. Espero haber deletreado ese derecho. Lo he tenido con ese aire ahí dentro. Pensé que era AutoCorrect. Por alguna razón, clase es igual a imagen a su alrededor. Pero, ¿qué? ¿ Aún no has visto la imagen para bajo? Porque allí teníamos un fondo blanco. Pero es si podemos encontrar otra imagen más bonita. ¿ De acuerdo? Casi hecho. El último es este presentar. Quiero dedo del pie este siendo un poco exigente, pero quiero ah, decir si la acción es nueva entonces, um, sí mostrar el botón Toby Post. Y de lo contrario, quería mostrarlo, y algunas personas podrían decir que eso no es necesario. Um, las
cositas van muy lejos. De acuerdo, eso es todo. Eso es todo para la forma. A ver cómo se ve. Entonces si recargo aquí Ah, y los amigos de Dios iguala este es uno de esos donde sólo tienes que mirar todo el asunto. Um, ¿cuál es la plantilla? Método? Post acción igual. A ver aquí, euro 40 que veo. Ahí lo tienes. Yo estaba yo no estaba cerrando eso apropiadamente, así que está bien, Perfecto. Entonces ahora tengo la imagen, um, para que pueda ver cómo se ve. Está un poco cerca de la cosa, pero lo que sea que tengamos el título, el contenido de categoría sostiene que funciona. Bien. Veamos la fuente de la vista. Ah, así que aguanta. Por lo que agregó póster de bloqueo. Ya ves cómo ahora el título dice que sobre tazones, y dice actualización en lugar de post. Y veamos la fuente para ver desde las ideas Son Yep. Ojos tan opuestos donde se va a enviar con el posteado el igual a dos A. Perfecto, um, posteó los iguales a ocho. Eso es interesante. Esperaba que esto fuera, um, solo, uh en ello y luego el post i d. Pero como no soy en realidad no soy como hacer nada con él. Asumo que la Europa por su Lo está haciendo apropiadamente. ¿ Qué? Ya veremos qué pasa. De acuerdo, así que ahora hagamos lo real, um, trabajo fuera, um, fuera de conseguir el post y, um um en editarlo. De acuerdo, entonces empecemos el proceso. Entonces, um, voy a decir que si la forma no valida al enviar pases, quieren decir que la imagen original es la imagen de post. Es el es lo que tengo en el poste. Um, desde el principio, y luego voy a decir, um entonces necesito hacer esta forma, poblar objeto desde post. Entonces, ¿qué es eso? Um, ¿qué hace eso? Entonces básicamente, carga el post Este post objeto que teníamos inicialmente ahí lo reemplaza con los contenidos fuera del formulario. Y ahora post ha sido modificado a lo que se introduzca en el en el formulario I D i e Si sólo cambias el título, por ejemplo, el nuevo título de Post doc va a ser lo que cada puesto en el formulario. Pero el resto de la información se va a mantener igual otra vez. Una línea fuera. Poderosas cosas. Normalmente hay que hacer muchos cheques. Es que no tienes ni idea. Es muy fastidioso, pero esto es súper elegante. Um, así que vamos a tratar de ver si la imagen del formulario se ha archivado. Eso significa que el usuario sí había enviado una nueva imagen. Entonces voy a hacer que soliciten esos archivos. Uh, no te pongas oh, imagen, que se está diciendo en la multi parte. ¿ Verdad? Y luego voy a tratar de salvarlo. Entonces nombre de archivo Deberías haber visto esto antes, ¿
verdad? Imágenes subidas, ah dot guardar imagen. Y luego si hay una excepción y,
uh, uh, flash la imagen waas no subir, ¿de acuerdo? Y por último, si tengo el nombre completo, entonces publicar la imagen equivale a dos fundadores. Perfecto. Entonces necesito revisar también, pero espera. Um, entonces Pero si el usuario no cambió la imagen, entonces la imagen de publicación es igual a la imagen original. Y, um, tenemos que hacer eso porque la ah, la imagen de post es, um probablemente va a ser borrada ya que no pusiste una imagen de forma ahí. Y es algo así ¿Qué es lo que se espera? Si no escogiste una imagen de archivo aquí y actualizas, yo estaba pensando OK, entonces significa que querías dedo del pie borrarlo, ¿
verdad? Pero no me siento cómodo que creo que debe mantener la misma imagen. Depende de ti Si quieres. A mí me gusta, sólo elimínelo. Si el usuario no envió algo aquí, o también podría,
como, como, tener en un enlace real ahí dentro o cambiar como Brady sobre en el dice la imagen. No lo sé, Um, hay muchas formas de hacer esto, pero lo que elegí hacer fue, si no escogiste un archivo que no significaba que quisiera eliminar esa imagen. Yo sólo Significa que sólo quedarse con la misma imagen. Entonces eso es lo que es esta línea. De acuerdo, um, Así que ahora voy a comprobar si hay nuevas categorías, porque eso significa que el usuario quiere cambiar la categoría y quiere cambiarla con algo nuevo, como si realmente tipeara el nuevo. Entonces después de la alguna gestión ahí, así categoría se forma nuevos datos de categoría, y voy a sesión en eso, y voy a vaciar para que obtenga el objeto de categoría. Y, um, voy a poner la categoría en la categoría de puestos a la nueva categoría. ¿ De acuerdo? Y ahora por fin estoy para enviar todo esto a la base de datos. ¿ De acuerdo? Y volver. Redireccionar euro para artículo slog es igual a post slug. Perfecto. Así que un montón de cosas. Todavía no tan complicado como lo era antes de que dos terminaran algo, pero
sí, es ahí algunos cheques que hay que hacer, sobre todo cuando tenemos imágenes, se
pone un poco más complicado. Pero, um entonces veamos, todo
esto funciona. Y antes de que nos
olvidemos, um, tenemos que pasar. Acción es igual a nuevo en esta cosa de aquí porque, um, ahora
estamos esperando eso. Entonces esto está en el esto está en el en el post en la función original, como, post. ¿ Verdad? Entonces juguemos un poquito con él. A ver si eso funciona. Um, entonces ¿por qué no empezamos por publicar algo nuevo? A ver que eso funciona. Por lo que deberíamos tener un post enlazando ahí. Entonces, um, no
voy a robar imágenes. Sólo voy a decir que este es, um, el artículo para terminarlo. Este artículo, está destinado a ser probado con edit. Funcional. Es trabajo arriba. Catherine de Python posó. Está bien. Perfecto. Por lo que se ve bien. Este es un real leerlo para ir al admin. Um, dice
que la imagen no fue cargada, supongo porque no había imagen. Eso es un bicho. De acuerdo, pero intentemos editar esto en este artículo. Entonces voy a editar, los
consigo ahí, voy a hacerlo, así que lo voy a agregar. ¿ Qué debo agregarlo aquí con cada funcionalmente esto funcionó perfectamente bien. Por lo que esa línea que estoy agregando al contenido. Y no voy a cambiar la categoría ni el título. Yo quiero actualizar. De acuerdo, hicimos un inserto. Eso es interesante. Um, bien, entonces ¿por qué está haciendo un inserto? Centro es en lugar de una actualización, debo haber empatado algo mal. Vamos a revisar. Está bien. Ya he visto ¿qué? Qué este waas Fue porque en el formulario para el poste, no está diciendo en el poste, se debe enviar al aire. Es Así que eso fue simplemente enviando todo el formulario al, um al whatchamacallit, la función de post. Entonces eso debería arreglar eso. Entonces eres oh, para editar Si es,
ah, ah, si es acción igual a agregada en la nueva si está bien, así que intentemos eso de nuevo, En realidad. Tienes que recargar esto. Entonces, vamos a ver. Editar. Esto debe actualizarse. Um, y vamos a revisar la fuente por si acaso. A ver a dónde se va a enviar. Editar nueve. Perfecto. De acuerdo, así que actualización perfecta. Entonces eso funcionó. Entonces esto está funcionando perfectamente bien. Entonces hagamos la muy dura, que es editar la ésta con una prueba de logotipo. Y, uh entonces vamos sólo otro archivo. Entonces tengo estos, um, la especia en logo aquí. Entonces es el Lector ahí. Um, y probemos con imagen cinco registros telefónicos. Estoy cambiando la imagen y el título. Ah, así que va a ser que va a ser todo un cambio. Entonces actualicemos eso. Sí, eso es impresionante. No esperaba eso. Yo estaba tratando de Toby. Ah, seguro de
sí mismo, pero no, se ve bien. Entonces ahora tenemos el, um, el ah, el local de Python aquí, y, um y cambió los títulos. Bueno, entonces eso está funcionando perfectamente bien. Y esto asombroso. Hemos hecho mucho. Um, y la siguiente sección va a ser sobre las pruebas, lo cual es súper importante, así que nos vemos allí.
78. Introducción a las pruebas de unidad: De acuerdo, entonces estamos aquí en la última sección ah del curso, y se trata de una parte muy importante. Off off. Ah, tu carrera como desarrollador Web es crear buenas pruebas,
y las pruebas son una especie de como la habilidad que se aprende casi por lo general la última. Pero en realidad es, um, después de que aprendas a probar, probablemente
vas a hacer lo que se llama desarrollo impulsado por pruebas. Um, así que en realidad vas a estar escribiendo las pruebas que se le piden. Escribes tu código porque así es lo importante que tus programas proben tus aplicaciones que nos prueben que nosotros para construirlos. Entonces hay algunos conceptos básicos que, um, eso ah, que son aplicables para las pruebas que voy a compartir contigo. Pero básicamente, hay un dicho Hay un dicho, Ah, que creo que es muy cierto, que es algo que no está probado está roto. Entonces si escribes código y no escribes una prueba para ello, básicamente
estás buscando Oh, te
estás configurando para como, fracaso. Um, y es porque las pruebas son tan importantes. Um, algunos de los principales conceptos en las pruebas, um, yo diría que el número uno es no probar cosas que son externas a tu aplicación Por ejemplo, no pruebes la sesión Eva está establecida porque eso es algo que no estás escribiendo. El set de sesión pieza del código que está construido en matraz y matraz de lino tiene sus propias pruebas para probar eso. Por lo que siempre debes concentrarte en probar cosas que son, um, básicamente que se relacionan con el código de tu escritura. El segundo es, tratar de escribir pruebas que cubran todos los usos posibles, incluidos los casos de borde. Entonces tienes que ser muy creativo y tipo de, como, llegar a, ya
sabes, cosas
extrañas que el usuario podría hacer. ¿ Cómo reacciona tu aplicación ante ella? Entonces, por ejemplo, um, en el formulario de registro se envió una cadena que tiene, ya
sabes, 1500 caracteres para el correo electrónico. ¿ Eso, um hace ese tipo de, como romper la aplicación o no? ¿ Ese tipo de cosas? Um, lo tercero es comprobar los 12 y escenarios. Entonces, por ejemplo, si tienes un p I que recibe múltiples entradas y prueba, ya
sabes, pasando un ítem en ese carbón, entonces prueba con cuatro y luego, um ya sabes que el elemento el tercer elemento de esa lista es basura completamente completa. Así que intenta probar siempre con, ah, ya
sabes, algo así como establecer los escenarios donde hay múltiples casos de uso para eso para esa pieza de la aplicación. Um, así que eso es más o menos eso. Um, te vas a quedar con el aguijón y conseguirás una prueba mejor. Ah, el mortero. Tú lo haces. Entonces intentemos armar algunas pruebas para nuestro bloque Fleiss. Entonces, um, lo primero que vamos a dos formas en que vamos a crear un,
um, um, un archivo de pruebas de frío. Y esto suele ser, um, donde vas a escribir todas las pruebas. Um, dentro de ese, um, ese expediente. Entonces vamos a crear ese archivo en el nivel de bloque en flash, y vamos a llamar a esto pruebas ser por qué? Y para las pruebas, usualmente
usamos una prueba unitaria lírica python. Entonces vamos a usar eso un oleaje, pesar de que, como algunos otros frameworks como, ah, Django tiene sus propias pruebas Sweet. Pero en realidad es que creo que es una extensión de pruebas unitarias. Pero para los pisos porque no tiene un construido en probar dulce, vamos a usar pitones, que es una biblioteca realmente, realmente buena. Entonces empecemos um, configuración que se cayó. El primero es, necesitamos establecer el camino tal como hicimos con el con el e nippy y. y,
um, um, así que déjame ver si en realidad puedo, um Oh, está en
lo obligatorio. ¿ Por qué, correcto? Entonces voy a copiar y pegar esto porque necesitamos el mismo tipo de como establecer la ruta para el, um, para este archivo para que sepa que es dónde está y cuál es el directorio relativo. Entonces vamos a importar prueba unitaria. Um, no
necesitamos instalar ningún paquete para esto. También importamos alquimia secuela, y, um y vamos a importar la secuela del matraz Alquimia. Um, biblioteca. De acuerdo, um entonces del matraz blawg, vamos a importar el AP y el DB hasta ahora, tan bien. Um, necesitamos importar todos los modelos. Um, así que hagamos eso desde modelos de autor, Importar estrella y desde modelos Blawg, Imports star. Entonces vamos a, um vamos a ir y empezar a mirar qué? El El formato off probando su y usualmente usan una clase en esa clase. Um, depende de
lo que estés probando, pero en este caso, ¿
vamos a hacer? Um, mayormente, um, pruebas de
bloques. Ah, por el lado para el usuario, pesar de que vamos a hacer algunos blawg, uh, pruebas. Eso está bien, pero solo agrupan todo en una sola clase, y puedes hacer varias clases también. Pero hagámoslo con usted, señor. Prueba. Entonces vamos a llamar a la prueba de usuario, y eso tiene que ser una instancia fuera de prueba caso, que está dentro de, um, prueba
unitaria. Um, lo primero que vamos a hacer es que vamos a tener una trampa y un derribo, armar y derribar los nuestros son básicamente, um, especie de, como, secciones fuera de esta clase que siempre se llaman al principio y al final cada prueba,
um, um, y básicamente configurados implicará a Rob. Algo así como crear un temporal que un jarrón. Por lo que en realidad no usamos la producción que baso para la que evade lo principal que
basé . Nosotros tipo de crear un nuevo ultra, es uno para que podamos, um para que podamos crear y destruir aquello que baso como prueba. Algo así sucede, Así que vamos a ver cómo hacemos eso vamos a, um Vamos a poner el ojo para eso. Y, um, así que voy a hacer más o menos lo mismo que hice con el escenario. Tres. Por qué, Um, que es, ah, importante. El nombre de usuario, la contraseña, el host de TV y esta cadena. Entonces vamos, um es a través de esto. Entonces vamos a llamar a esto el Así que vamos a tener, um llamemos a este bebé. Usa su nombre igual, y vamos a Podemos leer la configuración. Este, um, este valor fuera del nombre de usuario B dentro de la app dot com fig ah, array. Entonces ahora somos los que tenemos BB. Ah, contraseña. Y vamos a tener al anfitrión. Entonces, todos estos tres valores, como se puede ver, están aquí. Ah, nombre
desviado para ser contraseña y presentador de TV. No necesitamos el nombre de la base de datos blawg porque vamos a crear nuestro propio tipo de,
como test, um, um, base de datos o base de datos de blogging. Entonces ahora vamos a pasar las bolas de fuego aquí adentro Se usarían su nombre la contraseña B y presentadora de TV. No. Está bien. Y vamos a sacar esto, y en realidad estamos,
um, um, no
vamos a pasar el nombre de la base de datos aquí. De acuerdo, entonces ahora Vamos a configurar el, um, bueno, tenemos que venir temer algunas configuraciones relacionadas con las pruebas, y una de esas se llama ah Testing. Y tenemos que pasar eso como cierto. Y esto le dice al matraz automáticamente y lea esa bandera de prueba y sepa que
se está ejecutando bajo un, um, un modo de prueba. Y ese tipo de similar apaga algunos de los cheques y y puedes leer más al
respecto . Um, en línea, Pero básicamente es como si le dijera a la aplicación que va a Winston ella comió que Es una prueba dulce y orden. Una aplicación real que creo que tenemos que hacer es apagar la CSR f para WTF porque vamos a simular algo así como es de la gente, pero no queremos comprobar eso. El que la CSR f hablando es un clavo porque eso sólo es habilitar cuando, cuando, cuando realmente estás haciendo esto a través de un navegador. Entonces queremos ponerle eso dicho a las caídas. Entonces ahora digamos,
Ah, Ah, vamos a llamar al nombre de la base de datos para ser, um, Test Blawg en lugar de Blawg y ah, finalmente, vamos a pasar esa configuración dos. El secuela Alchemy, que base tu yo y ese es el derecho DVU que tenemos en la parte superior más up config Log que obviamente. De acuerdo, hasta ahora, tan bien. Ahora necesitamos crear un motor, que es básicamente una especie de secuela. Instancia de alquimia. Ahora podemos hablar con Do seas tú eres I. Y luego conectamos con ese motor y ejecutamos un commit para que si hay algo en
el en la sesión que sea algo así como Aisling, se despeja, y luego nosotros vas a hacer un crear que un jarrón con ese nombre de base de datos de sangre. Por último, hacemos un crear también que se crean todas las tablas y cerramos la conexión. Entonces eso es como crear la base de datos, um, programáticamente para nosotros. Y finalmente, él está Aquí es donde nosotros En su lugar, ella hizo la aplicación, y nos va a llamar cliente de prueba, Así que sé que es un montón de cosas fuera que es un poco raro, pero te vas a quedar con el aguijón. Esto es ¿Siempre tienes que hacer esto para que puedas, como, copiar y pegar todo eso y usarlo cada vez sin ningún problema? Um, y eso siempre va a ser como un patrón similar para las pruebas. De acuerdo, así que ahora vamos a hacer el, um, el derribo, que es básicamente el conjunto opuesto. Es derribar la base de datos y cerrar la conexión, y esto realmente eliminará para el plomo en esa base aérea por completo. Entonces al final, es como si nada hubiera pasado. Entonces vamos a empezar con la sesión Devi, quitar, y luego vamos a crear un motor que hicimos. Uh um previamente. Y básicamente son los mismos comentarios como este, y así vamos a hacer una conexión igual a motor Connect, y vamos a ejecutar un comentario. Y, uh, vamos a dejar caer la base de datos, así y finalmente cerramos la conexión. Perfecto. Por ahora, tan bueno. Um, así que ahora empecemos a crear el, um las pruebas reales y la primera prueba que vamos a hacer es crear la creación de un blawg y comprobar que es ah, está creado correctamente
79. Crear prueba de blog: De acuerdo, así que voy a, um, crear una función para crear blawg, y básicamente, lo
voy a hacer como una función inicialmente o desde el principio, porque voy a tener que hacerlo en cada prueba, Voy a tener que crear el bloque. Ahora, en cada prueba que corras, va a pasar por la configuración,
derribar, derribar, y básicamente, vas a especie de,
como, como, creado en una base y destruir la base de datos cada vez. ¿ Por qué? Porque cada prueba es básicamente una especie de como tu prueba alguna otra o una parte diferente de la aplicación. Entonces quieres que el dedo del pie comience desde una pizarra limpia, um, y creando el bloque. Es básicamente como si tuvieras que hacer eso cada vez. Por lo que voy a separar evaluar su propio tipo de función interna como que puedo llamar desde esta diferentes pruebas. Entonces hagámoslo. Y algo que verás muy interesado aquí es como si fuéramos a simular como si fuéramos algo así como publicar a una parte de la aplicación. Y la forma en que lo haces es a través del mecanismo o sistema de pruebas interno puedes simular, obtener y publicar solicitud http así que sácalo mientras escribimos esto. Entonces vamos a básicamente gran bloque va a regresar. Ah, un post de aplicación a la configuración y y ver aquí cómo hemos configurado ya que es como una especie de tu l um así que eso en realidad va a, como, golpear esa barra configurada para simular la creación del off the block. Ahora, una cosa que podrías preguntar. Y yo sólo estoy temiendo esto ya que estoy escribiendo esto, ¿por qué no usar tu l cuatro? Y en realidad, eso es una especie de, como, cosa
interesante. No había pensado en eso. Entonces, um, hagámoslo con set up. Sustituyamos eso por la chica para montarlo y veamos que eso funcione. Pero en todo caso aquí, entonces nos pasas un diccionario. Las cosas que necesitas publicar para configurar para crear la base de datos y esas cosas son nombre , um, mi prueba blawg. Y luego tienes un nombre completo, y voy a usar ah, Jorge Escobar y correo electrónico. Um, use su nombre, contraseña y confirme, que es la contraseña de confirmación, donde tenemos que ingresar la contraseña dos veces. Y, um entonces voy a pasar esta bandera fría. Um, caerse. Redirecciones es igual a true. Ahora, si no pasas esto, entonces va a golpear eso,
um, básicamente ese, um, um, ese punto de entrada o que tu l ruta, Pero no va a seguir lo que sea si hay un redireccionamiento de retorno o algo así. Por lo que queremos realmente seguir esas cosas. Entonces, um, así que en realidad queremos un dedo del como seguir, porque probablemente vamos a,
como, como, capturar o probar lo que sea que tengamos de eso, um, de ese post. Entonces eso es todo, Um así que ahora realmente vamos a crear nuestra primera nuestra primera. Eso es prueba. Entonces veamos cómo hacemos eso. De acuerdo, entonces la primera prueba se va a llamar prueba en el marcador. Crea bloque algo muy importante aquí. Pruebas siempre e empiezan con test, subrayan algo, y esa es la forma en que estás diciendo la prueba unitaria. Um ah. Sistema de que esto es esto en realidad es una prueba que vas a estar ejecutando y verás que todo lo que la prueba que tenía razón, um van a empezar con pruebas en el marcador. Como usted nota. Crear sangre no comienza con la prueba. Entonces eso no va a ser Ródano automáticamente por la suite de pruebas. Um, y es por eso que tipo de,
como,
creamos como, esta función de ayudante sin la prueba en la puntuación del principio. Entonces lo que vamos a hacer es capturar le preguntó el valor de retorno RV fuera de esa función auto crear sangre, y, um, así que la base o ellos saben el tipo de como el núcleo de cada prueba está afirmando que eso tienes un valor específico o una cadena específica o un Pacific, um, datos dentro de esa operación que estás haciendo. Entonces en este caso, voy a afirmar que blawg creado fue devuelto en la cadena A de este dato de RV. Por lo que Ivory Data va a almacenar los datos de ese resultado extra p like. Y porque estamos haciendo seguir a Rex real es igual a cierto. Eso significa que los datos que este todo este post que estamos haciendo ha bloqueado, creado, y cómo sé que van a tener sangre creada en ese, um, en ese retorno? Bueno, si vemos las vistas B y del blawg on set up. Entonces estamos configurados. Um, Ya ves, el libro flash creado aquí Pero después de la redirección, redirige dedo del pie el administrador justo en el admin. Ahí hay un flash. Entonces vamos a revisar eso dos veces. Um Ah. Mira, tenemos a los invitados flash conseguir mensajes aquí que la sangre crea va a estar en el administrador, Um, para después de que se cree la sangre. Entonces eso va a funcionar si el si el si la prueba se ejecuta correctamente. Está bien. Um, Así que finalmente, antes de ejecutar esto, necesitamos algo así como, ah, manejar el por qué o la, um, la unidad. ¿ Por qué eso lo teníamos en el pasado? Tenemos que comprobar si nombre es igual a main, que es algo así como OK, si esto está siendo dirigido por el en la terminal, entonces ejecutar pruebas unitarias dot main, y esto es básicamente unidad. Este principal va a llamar, um, la primera prueba que encuentre, que va a ser crear bloque. Pero antes de
que se ejecute, ahí es cuando yo, como, creé que base toda la base de datos, esta cosa de configuración, entonces va a probar la creación del blawg va a afirmar que los datos de RV que es retorno sobre sangre creada se enfrenta ahí, y luego va a pasar por derribado que en realidad es el vivo la base de datos. Entonces veamos cómo funciona eso cuando nosotros cuando corremos. De acuerdo, Así que ahora vamos a hacer el sabor, la prueba, y lo vamos a hacer por la terminal, así que asegúrate de que tengan tu entorno vehicular está configurado y encendido. Y ese año en el en la raíz, um, fuera de la aplicación. Um, Así que despejemos la pantalla y ah, está bien. Y vamos a probar esto. Por lo que pitón prueba P Y no se puede importar alquimia secuela. Sin secuela. Muy buena secuela. Alquimia. Eso fue difícil de atrapar. De acuerdo, así que intentemos eso otra vez. Despejado y luego por teléfono. Eso es b y no se puede conectar. Nombre o servicio? No se conoce. De acuerdo, parece que nuestra base de datos no está funcionando. Ah, Control. C c No, se ve lo que iss tipo de. Creo Serio. Serio. Aquí. Prueba blawg. Supongo que nos falta un uh sí, nos falta un, uh, una barra. Vale, Así que veamos aquí auto para ser Oh, me falta un trailing, cortando su podria Enfriar. Entonces vamos a aclarar y volver a hacer la prueba de que soy sexista. Ah, está bien. Entonces ahora que eso siempre existe. Entonces tenemos que dejarlo caer antes de que podamos hacerlo de nuevo porque parece que se creó. Entonces si sí mostramos base de datos, Sí, veo pruebas bloqueando ahí. Entonces dejemos caer la prueba de base de datos en el marcador. Blogged. Está bien. Y probémoslo una vez más. La sangre fallada lo aclaró. De acuerdo, así que eso es una aserción, Eri, que es bueno. Significa que ahora todo el proceso se está ejecutando. Si ves eso, que una base aquí, verás que el bloque de prueba no está ahí. Eso significa que fue creado, y luego fue desterrado o caído, como tenemos en el guión. Pero dice que bloque creado no está en el arroyo on the return, y tenemos que averiguarlo. Entonces un truco que hago es realmente imprimir los datos de RV para ver cómo se ve eso. Y, um, y entonces podemos especie de, como, comprobar cuál es la salida de esa función. Entonces vamos a ejecutarlo de nuevo y en realidad voy a maximizar este padre mezclando, um, usando python to Okay, son 434 mil millones. Uh huh. Entonces eso significa que de alguna manera estamos comprobando que, um que el usuario tiene No, um, es no, no está configurando al autor este, um, ajuste. Entonces veamos aquí. Entonces si voy a admitirlo dice autor requerido, pero al configurar,
ver aquí,
golpe ver aquí, creado s así que supongo que no estoy iniciando sesión, Así que me está enviando al administrador. ¿ Qué? Todavía no he mirado. Entonces este es el tipo de cosas que vas a descubrir cuando estás haciendo tus pruebas. Um, así que vamos a ver, ¿cómo podemos hacer esto? Entonces como pensaba, más sobre esto cuando lo voy a hacer realmente tiene más sentido, es después de los bloggers creados para enviar al usuario a la página de índice y luego mostrar al usuario o la cadena de sangre creada ahí dentro. Entonces Pero para que yo haga eso, um, voy a voy a necesitar mostrar mensajes destellados aquí y el otro el único
lugar donde los mensajes medio flash en este momento está en el admin. HTML. Entonces lo que voy a hacer es convertir esto en un para ser una,
um, um una macro, y luego puedo iniciarlo en cualquier lugar que necesite. Entonces voy a atrapar esto y crear una nueva,
uh, uh, nueva plantilla de presentación, y voy a llamarla en la puntuación de los mensajes flash dot html y dentro de los mensajes flash. Voy a tener ese fragmento fuera del código. Entonces, um, voy a salvar esto. Y luego Así voy a entrar aquí. Voy a tener, um, básicamente insertar los, um, los mensajes flash. Entonces por ciento, um, incluye mensajes flash, puerta html. Y luego cuando hacen lo mismo en la página del índice, um, eso es juguetón. Aquí. Ups. Ahí vas. Entonces ahora veamos si eso también lo último no es Entonces cuando crea el blogger, no los
voy a mandar a admin. Voy a enviarlo a la página de índice, y luego tendrán un enlace de registro en esa página, así que eso debería funcionar. Entonces intentemos una vez más y ejecutemos la prueba. Está bien. Impresionante. Entonces mira, y ahora ten el vapor Esta es la edad Deja que me ponga y lo estoy mirando y dice,
Ah, Ah, mensajes de
clase. Sangre creada. Esta es una cadena que nos devolvimos. Entonces, ¿qué? En lugar de, um, no
quiero ver todo ese viejo tipo de datos como, um, um,
html. Simplemente voy a, como, suprimir esto para que veas cómo se ve y quede clara la pantalla y vuelva a ejecutar la prueba . Perfecto. Entonces cuando ves un pequeño punto, significa que eso corrió esa prueba, y dice Ejecutar una prueba. De acuerdo, entonces estas son primera prueba y pasó, así que sigamos construyendo encima de esto.
80. Pruebas de usuario: De acuerdo, Así que ahora vamos a escribir nuestra próxima prueba. Voy a dejar a ese Toby sólo eso, esa sola cosa y voy a empezar a probar, iniciar sesión y cerrar sesión. Entonces esta es nuestra próxima prueba, y primero voy a hacer lo siguiente. Yo quiero hacer crear blawg porque necesito crear el bloque cada vez. Y ahora voy a hacer una tala derecha. Entonces voy a hacer auto login también lo que necesito para crear esta disfunción. Entonces voy a crear otra función de auxiliar de funciones, porque voy a tener que iniciar sesión con bastante frecuencia y cerrar sesión también. Entonces voy a crear esas, como, funciones de
ayudante. Entonces deja ahí flagelación va a tener Vamos a pasar un nombre de usuario y contraseña, y voy a devolver el post off slash bajo otra vez, que es un diccionario de datos apagado. Um, usar su nombre es igual a nombre de usuario y contraseña es igual a contraseña y luego, ah, como con él antes de seguir redirecciones es igual a true. Está bien. Y luego lo mismo. Voy a tener una función local porque probablemente voy a estar llamando mucho a esto. Y éste sólo va a tener, ya
sabes, parámetros y yo sólo voy a regresar. Yo. Um, me perdí una app aquí. Auto app post, en realidad get puedo hacer solo para conseguir porque no necesito enviar ningún parámetro. Y para los redireccionamientos igual verdadero. Perfecto. Entonces ahora, um, intentemos autoiniciar sesión con, um, Jorge y probar, que es el yusor que hemos creado aquí en el on the create blogged. Y vamos a hacer valer que la cuerda que usted, señor Jorge, encerró porque eso es lo que mostramos en el cuándo Eso cuando se ejecuta eso. Entonces probemos eso. Asert No estoy recibiendo usuario Jorge, Mira. Está bien. ¿ Por qué? Entonces veamos aquí. Um, debería estar ejecutando la función de registro aquí. No, realidad no
estoy regresando. No estoy haciendo un mensaje flash cuando yo cuando inicio sesión Ah, a la derecha. Entonces hagamos una medida de flash cuando el cuando el usuario se bloquea correctamente. Entonces lo haré aquí dentro. Destello, señor. ciento s encerrado, y lo voy a hacer con ah, nombre de usuario de
forma. Ellos y, um eso deberían enviar esto al espacio índice donde tenemos los mensajes flash ahí dentro. Entonces intentemos que el flash no esté definido o no tenemos flash aquí. Entonces desde el flash de importación de matraz. De acuerdo, así que una vez más. Perfecto. Esta noche está funcionando correctamente, así que puedes ver Es como si estuviéramos,
um,
asegurándonos de um, que, um que hay algún tipo de señal en el en el en la retroalimentación fuera de esa operación. En este caso, estamos usando mensajes flash, y deberíamos estar siempre probando y comunicando con el usuario. ¿ Qué? ¿ Qué acaba de pasar? Pero por supuesto, puedes probar todas las cosas dentro de los datos de RV que te permiten, um para obtener la señal de que esa función está funcionando correctamente. Entonces probemos otra. Vamos a probar el log out, y vamos a simplemente hacer usted mismo mirar hacia fuera y estamos en aseverar que el usuario miró hacia fuera, está en los datos. Y como la única India todo su caso, necesitamos enviar ese mensaje flash cuando miremos aquí adentro. Así que cuídate. Usuario Flash miró hacia fuera. Entonces digamos esto Perfecto. Entonces digamos que dice rentas que dos pruebas, um ,
básicamente, cada prueba es cada una de estas. Entonces está esta prueba número uno, y esta prueba número dos. No importa cuánto se parecieran a los subtipos en cada uno de ellos. Um, Ok, estamos tratando por las cosas buenas, como cosas que no van a fallar. Pero probemos algo que fallaría. Por ejemplo, um, el mal uso y hasta la contraseña. Entonces veamos cómo hacemos eso. Entonces vamos a hacer un propio buscando con el nombre de usuario Jorge y la contraseña equivocada. Um y entonces vamos a afirmar que tenemos esta cuerda aquí. Ah, en nombre de usuario y contraseña del cordón. Entonces intentemos hacer eso. Perfecto. Entonces puedes ver que estamos algo así como, construyendo
lentamente todas las cosas que escribimos y probando que en las que trabajan. El embellecimiento, dicen, es que cada vez que sigas construyendo tu aplicación, vas a estar construyendo una nueva prueba para esas cosas que estás construyendo. Y puedes estar seguro de que tu solicitud no se va a romper. Y eso es como una gran sensación de tener, porque eso significa que tu aplicación es fuerte y y no vas a tener ningún problema en absoluto.
81. Proyecto final: felicitaciones por completar el curso. Esto es Ah, ha
habido un buen paseo. Um, has aprendido desde cero el lenguaje pitón y, ah, ya
sabes, patrones de
software como el decorador y la NBC. Um, y en realidad has construido una bonita, um, compleja aplicación de la forma en que lo haría nuestro desarrollador web profesional. Entonces, ya
sabes, definitivamente. Deberían sentirse orgullosos de sí mismos. Y es ah, es una gran sensación empezar a aprender sobre todo esto. Y por supuesto, esto es igual que el principio. Deberías seguir probando cosas, aplicaciones de construcción de
sonido, y definitivamente me siento libre de compartirlas conmigo. Voy a Ah, espero sus creaciones. Um, como proyecto final de prueba final, me gusta dar a mis alumnos, Y si no lo haces, los otros cursos que yo que hago siempre tengo esta prueba final o proyecto final Ese tipo de como prueba tu conocimiento y ver cómo pudiste conseguir todos los, um todos los aprendizajes que eso tiene esta maldición. Y lo que quería hacer es usar, um, básicamente el para el mismo tipo de formato dentro de, um ah, el blogueado para poder hacer comentarios en cada publicación de bloque. Entonces recuerda cómo teníamos esta función de registro en el en las vistas del usuario, Um, donde realmente no hicimos nada con ella. Pero quiero que seas algo así, permite que un usuario se registre y luego poder publicar comentarios en cada publicación de bloque. Y, um y ese sería el proyecto final. Completa eso. Yo quiero que escribas pruebas para ello también,
y luego,
ah,
compartas y luego, ah, con todos los todo el curso y todos los alumnos aquí, um, en un repositorio git para que podamos echar un vistazo. Voy a echar un vistazo. Descargaré el código y lo ejecutaré en mi máquina. Y si es bueno, entonces lo haré. Algo así como un reconocimiento público fuera de eso. Y también me va a gustar la ofrenda,
um, um, cupones
muy descontados del pie de mi próximo curso, Um ah. Mis cursos sobre python y otros, um, otro, como front end y, uh, y otras cosas que tengo en mente. Entonces Ah, definitivamente. Yo quiero que tomes este reto y nos muestres qué puedes hacer con, uh, con lo que aprendiste hasta ahora. Trabajo tan impresionante. Y, um, esperemos, nos vemos pronto en mi próximo curso