From 3bd34b7dadefc6787103638643bfd7a5f7cc60a0 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Mon, 30 Jun 2014 21:27:36 -0300 Subject: [PATCH] more about contexts and configs --- flask.html | 89 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 72 insertions(+), 17 deletions(-) diff --git a/flask.html b/flask.html index 4ab99b9..5827658 100644 --- a/flask.html +++ b/flask.html @@ -210,36 +210,55 @@ app = Flask(__name__)
-

Configurações

+

Contextos

-

Configurações podem vir de 3 lugares diferentes:

+

Essa é a parte chata do Flask.

-
    -
  • De uma classe.
  • -
  • De um arquivo Python.
  • -
  • De um arquivo apontando por uma variável de ambiente.
  • -
+

Existem dois contextos: Contexto de aplicação e Contexto que requisição.

+
-

Todos os três podem ser executados em sequência, o último valor - encontrado é o que vale.

-

+
+

Contexto de aplicação só existe quando o app está rodando.

+ +

Acessado com current_app.

+ +


+from flask import current_app
+						

+ +

É a única forma de acessar dados da aplicação enquanto ela + está rodando.

+

Contexto de requisição só existe quando o sistema está + atendendo uma requisção (recebeu uma URL).

+ +

Acessado com request.

+


-class Settings(objects):
-	FILE_PATH = './here'
-	ORDER_FIELD = 'name'
+from flask import request
 						

+

Mais sobre request mais adiante.

+
+
+
+

Para acessar as configurações, usa-se a propriedade config + da aplicação quando esta está rodando.

+ +

(Contexto de aplicação, lembra?)

+


-app = Flask(__name__)
+from flask import current_app
+from flask import render_template
 
-app.config.from_object(Settings)
-app.config.from_pyfile('/etc/meuaplicativo.cfg')
-app.config.from.envvar('MEUAPLICATIVO_CFG')
+@app.route('/')
+def index():
+	return render_template('template.html',
+	                       order=current_app.config.get('ORDER_FIELD'))
 						

@@ -574,6 +593,42 @@ def not_found(): +
+
+

Configurações

+
+ +
+

Configurações podem vir de 3 lugares diferentes:

+ +
    +
  • De uma classe.
  • +
  • De um arquivo Python.
  • +
  • De um arquivo apontando por uma variável de ambiente.
  • +
+ +

Todos os três podem ser executados em sequência, o último valor + encontrado é o que vale.

+

+
+ +
+


+class Settings(objects):
+	FILE_PATH = './here'
+	ORDER_FIELD = 'name'
+						

+ +


+app = Flask(__name__)
+
+app.config.from_object(Settings)
+app.config.from_pyfile('/etc/meuaplicativo.cfg')
+app.config.from.envvar('MEUAPLICATIVO_CFG')
+						

+
+
+

URLs reversas/Endpoints