Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python na Web com Flask

Python na Web com Flask

Em nosso #7 Opentalks o Guilherme Carvalho (https://br.linkedin.com/in/guilherme-arthur-de-carvalho-3ba16a34) apresentou porque devemos olhar com carinho para o Python e como ele pode ser ágil, robusto e ao mesmo tempo flexível adotando o framework Flask.

Opensanca

June 01, 2016
Tweet

More Decks by Opensanca

Other Decks in Programming

Transcript

  1. Apresentação • Guilherme Arthur de Carvalho | Gui • Formado

    em ADS (IFSP campus Araraquara) • Desenvolvedor Liferay, Entelgy Brasil • Desenvolvedor Python quando tem trampo
  2. Visão Geral • História • Flask (routes, staticfiles, templates, request,

    cookies, sessions) • Extensões • Aplicação Flaskr • Blueprints
  3. Pocoo Team • Grupo de entusiastas Python • Fundado em

    2004 por Armin Ronacher e Georg Brandl • Desenvolvem ferramentas open source
  4. Comunidade Flask é o *segundo Framework Python mais utilizado. *

    No momento que essa apresentação foi criada.
  5. Configuração e Convenção Flask tem alguns valores de configurações default

    que são os app.conf.* (TESTING, SECRET_KEY). Templates e arquivos estáticos são armazenados em subdiretórios dentro da aplicação com os nomes templates e static respectivamente.
  6. Hello opensanca! from flask import Flask app = Flask(__name__) @app.route('/hello')

    def hello_opensanca(): return 'Hello opensanca!' ~$ export FLASK_APP=app.py ~$ export FLASK_DEBUG=1 ~$ flask run http://localhost:5000/hello
  7. Rotas from flask import Flask app = Flask(__name__) @app.route('/user/<username>') def

    show_user_profile(username): return 'User {}'.format(username) @app.route('/user/<int:post_id>') def show_post(post_id): return 'Post {}'.format(post_id)
  8. Métodos HTTP from flask import request @app.route('/user/create', methods=['POST', 'GET']) def

    create_user(): if request.method == 'POST': # cria usuário else: # exibe form
  9. Durante a fase de desenvolvimento podemos usar o Flask para

    servir arquivos estáticos. Para isso devemos criar uma pasta chamada static em nosso pacote. url_for('static', filename='style.css') … <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}"> … Arquivos estáticos
  10. Templates from flask import render_template @app.route('/welcome/<name>') def welcome_name(name): return render_template('hello.html',

    name=name) <DOCTYPE html> <html> <head> <title>opensanca</title> <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}"> </head> <body> <h1>Welcome, {{ name }}</h1> </body> </html>
  11. Cookies e Session from flask import make_response @app.route('/') def index():

    resp = make_response(render_template(...)) request.cookies.get('username') resp.set_cookie('username', 'the username') return resp from flask import Flask, session, redirect, url_for, escape, request @app.route('/') def index(): … return '%s' % escape(session['username']) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': session['username'] = request.form['username'] … @app.route('/logout') def logout(): session.pop('username', None) return redirect(url_for('index'))
  12. Flask-ext-* O Flask possui wrappers para diversas bibliotecas. Esses wrappers

    são chamados de EXT. Você pode consultar os disponíveis em: http://flask.pocoo. org/extensions/