0% acharam este documento útil (0 voto)
29 visualizações17 páginas

Flask

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
29 visualizações17 páginas

Flask

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
Você está na página 1/ 17
wi Brito < Notear €C50: Introdugéio & Ciéncia da Computacao - 0 Curso de Harvard, no Brasil [ORIGINAL] [LEGENDADO} 90 alas) no total > > Intvoaucso Médulo 0: Seratch Médulo tc Module 2: Arrays Médulo 3: Aigortmos Médulo 4: Meméria Modulo 5: Estruturas do Dados, modulo 6: Python Méduio 7: SOL Médulo 8: HTML, C58, Jeveserit \ Medulo 9: Fase \ Introduce ae Médulo 9 Introducio a Flask @ V Aula 9 B Aue Q oat < Anterior | Préximo > Anotacoes da Aula 9 Vocé esta quase finalizando o CC50. Que caminhada de aprendizado, ein? Diga ola para o Médulo 9! vga Uld para O wUUUIV 2: + Desenvolvimento WEB + Flask + Formularios + Post Loyouts Frosh IMs Sessdes + Amazenamento de dados + Aplicasdo Lojalshowe) Quero compartilhar meu aprendizado e/ou minha duvida... Desenvolvimento WEB Hoje vamos criar aplicativas da web mais avangacdles escrevendo cadigo que é executado no servi. No semana passed, usamos http-server no CS50 IDE como um servider web, un programa que escuta conexées e solicitaydes e responde com paiginas web ou outros Uma solictagio HTTP possui cabecalis, como: er / wTTP / 1.2 ses cabecalhos podem solictaralgum arquivo ou pagina ou enviar dados do \ Exercicios Dy instrugies para ox Dy. Exerecio C850 Fin > bebe > Médulo 10: ica > Encerramento do Curso navegador de vote a0 servidor Embora o servidor Into responda apenas com paginas estaticas, pademos usar outros servidores da web que “leem" ou analisam cabegalhos de solictaglo, como GET / search? Q = cats HITP / 1.1. para retomar es paginas dinamicamente Flask Usaremos Python © uma biblioteca chamada Flask pata escrever nosso proprio servidor ‘web, implementando recursos adicionais. O Flask também é um framewerk, onde a biblioteca de cédigo também vern com um conjunto de convengbes de como deve ser uusada, Por exemplo, coma outrasbiblotecas,o Flask inclu fungdes que podemos usar para analsarsolictagdes indivdualmente, mas como uma estrtura, também requer {que 0 e6digo do nosso programa seja organizado de uma determinada manetr: application. py requirements.txt static/ tenplates/ + application py ters o cécligo Python para nosso servidor web. + requirementsxt incu! uma lista de iblltecas necesséiias para nosso aplicatvo. + statie/& um diretrio de arqulves estacos, come arquives CSS e JavaScript ‘+ templates/é um ciretoio para aquivos que sero usados para criar nosso HTML fal Existem mutas estruturas de servidor web para cada uma das linguagens populares, © Flask serd um representante que usaremos hoje. 0 Flask também implementa um padre de design espectico ou a manetra como nosso programa e cédigo sto organizadios. Para Flask, 0 padi de design & geralmente MVC , ou Modll ~ view ~ controle: = ueonres sarees VIEW CONTROLLER \ 7 &, g NF USER ‘+ O controlador é nossa logica e cécigo que gerencia nossa aplicagéo de maneira ‘geral, com base na entrada do ususrio, No Flask, este sera o nosso c64tigo non + A visualizagso ¢ a interface do ususrio, como @ HTML e CSS que o usuario verd © com 05 quais rd Imeragir + Omodelo sio 0s dados de nosso aplcativo, como um banco de dados SQL ou arquivo CSV A aplicagto de Flask mais simples pode tera seguinte aparéncia from Flask import Flask ‘app = Flask(_nane_) Gapp.route("/") def index(): return "hallo, world” + Primeir,importaremos o Flak da biblioteca flaek, que usa uma letra malscula come nome principal, + Em segulda,claremos uma vatlvel de app atrbuindo © nome do nesso arquivo & votive Flask, + A seguir, identitcaremos uma fungo para a rota / ou URL com @ app.route simbolo @ em Python ¢ chamado de decorador, que aplica uma fungio @ out. + Chamaremos 0 index da fungio pots ele deve responder a uma solictago de /, ‘a pagina padido. E nossa fungo apenas responder com uma string por enquanto, No IDE $50, podemos ir para o ditetério com o céaligo do nesso aplicativo e digitar #lask run para inicélo. Veremos um URL © podemos abrilo para ver helo, word -rualzaremos nosso c6igo para realmente retornar HTML com a fungao render _tesplate, que encontia um arquivo fomnecido e retomna seu conteuide: from flask inport Flask, render template ‘app = Flask(_name_) app.route("/") def index<| return render_tenplate(" index.html") ‘+ Precisaremos criar um dretorio tenplates/ e criar um arquivo index.html com algum conteide dentro dele, + Agora, citar Flask run retomnaré esse arquivo HTML quando visitarmos a URL do nosso servidor. ‘Vamos passar um argumento para render_tenpLate em nosso cédige cle contralador: from flask inport Flask, render_tenplate, request ‘app = Flask(_name_) Gapp.route("/") def index(): return render_tenplate(""index.htmi", quest.args.get("name", "world”)) *+ Acontece que podemos fornecer a render_template qualquer aigumento rromeado, como name, ¢ ele rd substitutlo em nesso modelo ou em nosso arqulvo HTML. com marcadores de posiao. © Em indexheml substtuemos hello, word por helo, para dizer 20 Flask onde substiuir a varlivel de name ‘chead> hello, {{ name }) ‘+ Podemos usar a vaiavel de request da biblioteca Flask para obter um pardmetro da solctagdo de HTTP, neste caso também name, ¢ vlter para um padiio de ‘word se nenhum foi fornecid. + Agora, quando reiiciaimos nosso Servidor apés fazer essas alteragoes, € visitarmos a pagina padio com uma URL como /PramesDavid, veremos essa mesma entrada retomnada para nds no HTML gerado por nosso servidor. Podemos presumir que a consulta de pesquisa do Google, em /search?qreats, também € analisada por algum codigo para o parémetio qe passada para algum banco {e dados para obter todos os resultados relevantes,Esses resultados slo ento usados para gerar a p3gina HTML Anal Formularios Vamos mover nosso modelo original para greethiml, de forma que ele cumprimente 0 sudo com seu nome, Em index heml, criaremos um formulatio: ‘head “ceitlerhelloc/titley
“input nanes"name” type="text" «Herm *+ Envlaremos 0 formnuliro para a rota /greet .¢ teremos uma entrada para 0 pardmetro de nanee outra para o botao de envi, + Em nosso controlador appieations.py tamisém precisarernos adicionar uma fungi para arota /greet . que ¢ quase exatamente o que tintiamos para / app route("/") ‘def index(): return render_tenplate("index. html”) app route("/greet") def greet(): ‘return render_tenplate(“greet html", nane=request.args.get "name", "world")) ‘+ Nosso formulario em index.heml serd estatico, pols pode sero mesmo sempre Agora, podemos executar nosso Servidor, ver nosso formuléio na pagina padrlo ¢ us lo para gerar outa pagina POST NNosso formulario acima usou o método GET, que inclu os dados do nosso formulrio na URL, Vamos mudar 0 método em nosso HTML: <\fora actions”\greet™ inethod="post”\>. Nosso contiolador também precsara ser alterado para acettar 0 método POST e procurar o parsmetio em outro lugar Gapp.route("/greet", methods=["P0sT*]) def greet(): return render_tenplate(“greet html", amesrequest.form.get("name", “wor]d")) + Eimbora requestargs seja para parametios em uma solcitae0 GET, temos que sar request form no Flask para pardmetros em uma sollctaga0 POST, ‘Agora, quando relniclamos nosso aplicativo apes fazer essas ateracdes, podemos ver que 0 formulério nos leva a /greet, mas 0 contetido nfo esté mais incluido na URL. Layouts Em indexchaml¢ greet hemi, temos alguns céigos HTML repetidos, Com apenas HTML, no podemos compartinar codigo entre arquivos, mas com modelos Flask (& outras estuturas da wet), paclemos fatorar esse contesdo comum. CCraremos outro modelo, ayouttem head ctitlohelloc/tities “ body 4% block body ¥}{% endblock %} ‘+O Flask supora Jinja, uma linguagem de templates, que usa a sintaxe {% > para inlurblocos de espago reservado ou outros pedagos de edigo. Aqul ‘nomeamos nosso blaco bed, pois ele contém o HTML que deve ino elemento boa. Em Index him, usaremos o layout html come modelo © apenas definiremos 0 bloco do body com: {% extends “leyout.html” ¥} 4% block body 8} ‘meta nane="vieuport” content="initial-scale=t, widthedevice-width"> 4% block body %}(% endblock %) + Uma tag em nos permite aicionar mais metadados & nossa pagina, Neste caso, estamos adicionando um atibuto de eantent para os ‘automaticamente o tamanho as fontes de nossa pagina para o dispositive, Em nosso application.py retornaremes nosso modelo indexchemnl para 0 padre de rota 1 ‘from flask import Flask, render_tenplate, request app = Flask(_name_) ‘SPORTS = [ "Dodgebsl1”, "Flag Football”, "soccer", "Volleyball", "untinate Frisbee” Gepp.route("/") def index(: return render_tenplate("index.htm1") Nosso modelo index.heml terd a seguinte aparéncia 4% extends “leyout.html” ¥} 4 block body %} “chivRegisterc/hi> ‘input autocomplete="off" autofocus name="name" placeholder="Name™ type="text"> 4% endblock %} ‘+ Teremos um formulétio como antes, eteremos um menu <\seleet> com opges: para cada espore, Em nosso applieation.py. permititemos POST para nossa rota /register: Gepp.route("/register", methods=["POST"]) def register() if not request.form.get("nane") or not request. form.get (sport! return render_tenplate("failure.html") return render_tenplate("success.html") «+ Verfcaremos s€ 0s valores do nosso formulario sao vals e, em seguida, retomnaremos um modelo dependendo dos resultados, embora nfo estejamos realmente fazendo nada com os dads ainda Mas um usuirio pode alterar o HTML do formulliio em seu navegador ¢ enviar uma solctagio que contenha algum outio espoite como opgéo selecionada! Veriicaremos se o valor para spat é valde criando uma lista em applieation.py- from flask inport Flask, render_tenplate, request =F Flesk(_name_) ‘SPORTS = [ "Dodgebsl1", Flag Football” "soccer", Gapp.route("/") ‘ef index(): return render_tenplate("index.html", sportssSPORTS) Em seguida, passaremos essa lta para 0 modelo index. hem Em nosso madele, podemos até usar loops para gerar uma sta de opsées da lista de cords passadas como sport:

Você também pode gostar