what the flask? and how to use it with some google apis

16
+ Google

Upload: bruno-rocha

Post on 17-Dec-2014

683 views

Category:

Technology


0 download

DESCRIPTION

Tech Talk for Google Developer Bus Brasil 2013

TRANSCRIPT

Page 1: What The Flask? and how to use it with some Google APIs

+ Google

Page 3: What The Flask? and how to use it with some Google APIs

Full StackFramework Micro Framework

Faz as escolhas por você e oferece uma plataforma completa

(ORM, Templates, Organização de arquivos, arquivos de configurações, etc)

+ Fácil- controle

Define apenas o básico(WSGI, request, response, session etc)

Crescimento gradativo+ trabalhoso

+ controle

Page 4: What The Flask? and how to use it with some Google APIs

Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions.

What The Flask?

Page 5: What The Flask? and how to use it with some Google APIs

Werkzeug - WSGI library

from werkzeug.serving import run_simple

from werkzeug.wrappers import Request, Response

@Request.applicationdef application(request): return Response('Hello World!')

run_simple('localhost', 4000, application)

Page 6: What The Flask? and how to use it with some Google APIs

Jinja - Template engine

{% from _above_file.html import render_user %}<title>{% block title %}{% endblock %}</title><ul>{% for user in users %} {{ render_user(user) }}{% endfor %}</ul>

{% macro render_user(user) %}<li><a href="{{ user.url }}">{{ user.username }}</a></li>{% endmacro %}

Page 7: What The Flask? and how to use it with some Google APIs

Good intentions.

# thread localsfrom flask import request, session, g

# extensionsfrom flask.ext import AmazingExtension

# blueprintsfrom flask import Blueprintblog = Blueprint(“blog_blueprint”)blog.template_folder = “path/to/folder”blog.static_folder = “path/to/static”

# Application factoryapp = create_app(**kwargs) app.register_blueprint(blog)AmazingExtension(app)

Page 8: What The Flask? and how to use it with some Google APIs

It is not a framework, it is a pattern!

Good intentions

your_app.py

flask.ext.*

Page 9: What The Flask? and how to use it with some Google APIs

from flask import Flaskfrom flask.ext.security import Securityfrom flask.ext.admin import Adminfrom somewhere.db.models import UserDatastorefrom somewhere.views import indexpage

def create_app(**config): app = Flask(“myapp”) app.config_from_object(config) Admin(app) Security(app, UserDatastore) app.add_url_rule(“/index/<something>”, view_func=indexpage) return app

if __name__ == “__main__”: app = create_app(SECRET_KEY=”XYZ”) app.run()

your_app.py

$ pip install flask, flask-security, flask-admin, xpto-orm

Page 10: What The Flask? and how to use it with some Google APIs

BlueprintsUm Blueprint funciona de forma similar a um objeto Flask, mas na verdade não é uma aplicação, mas sim um projeto de como construir ou extender uma aplicação

from blog_blueprint import blog_extension

def create_app(**config): app = Flask(“myapp”) ... app.register_blueprint(blog_extension) return app

from flask import Blueprint, render_templateblog_extension = Blueprint(“my_blog_extension”)blog_extension.endpoint = “/blog”blog_extension.template_folder = “path/to/blog_templates”blog_extension.static_folder = “path/to/blog_static” @blog_extension.route(“/index”)def blog(): posts = some_db_or_orm.posts.query() return render_template(“blog.html”, posts=posts)

your_app.py

blog_blueprint.py

Page 11: What The Flask? and how to use it with some Google APIs

● Flask subclass○ class MyOwnFlask(Flask):

pass● application factory

○ app = create_app(**config)○ evitar import circular

● Blueprints○ Mesmo que seja uma one-page-app

● Flask-Admin○ Modular, insira qualquer view no admin, crud completo, actions, filters

● Flask-Security○ Login, Logout, Lembrar senha, Register, Access control, permissions

● Flask-script○ python manage.py faça_me_um_sanduiche

● app.config_from_envvar○ Settings desacoplado da app○ export APP_SETTINGS=”/path/to/settings.cfg”○ app.config_from_envvar(“APP_SETTINGS”)

Page 12: What The Flask? and how to use it with some Google APIs

and Google ?

Page 13: What The Flask? and how to use it with some Google APIs

# app.yamlapplication : nome_do_appversion : 1runtime : python27api_version : 1threadsafe: true

libraries:- name: jinja2 version: "2.6"- name: markupsafe version: "0.15"

handlers:- url: /static static_dir : your_app_folder/static- url: .* script : main.app

# your_app.pyfrom flask import Flask

def create_app(): app = Flask(__name__) return app

# main.pyfrom werkzeug import DebuggedApplicationfrom your_app import create_appapp = DebuggedApplication(create_app())

http://bit.ly/flask-gae

Page 14: What The Flask? and how to use it with some Google APIs

# your_app.py

from flask import Flask from flask.ext.googleauth import GoogleFederatedfrom .configurator import register_views

def create_app(): app = Flask(__name__) app.secret_key = “XYZ” auth = GoogleFederated("dominio.com", app)

register_views(app, auth) return app

https://github.com/sashka/flask-googleauth

# configurator.pyfrom .views import myview, …, ...

def register_views(app, auth) secret = auth.required(myview) app.add_url_rule(“/secret/”, view_func=secret) … ...

# views.pyfrom flask import g

def myview() return "Logged user, %s (%s)" % (g.user.name, g.user.email)…...

Page 15: What The Flask? and how to use it with some Google APIs

github.com/rochacbruno/Flask-GoogleMaps

pip install flask-googlemaps

from flask import Flaskfrom flask.ext.googlemaps import GoogleMaps

app = Flask(__name__)GoogleMaps(app)

<div>{{googlemap("my_awesome_map", 0.23234234, -0.234234234, markers=[(0.12, -0.45345), ...])}}</div>