You are on page 1of 17

TUTORIAL FLASK.

O APLICATIVO INICIAL.

from flask import Flask

app = Flask(__name__)

@app.route(’/’)

def hello_world():

return ’Hello World!’

if __name__ == ’__main__’:

app.run(debug=True)

ARQUIVOS ESTATICOS:

To generate URLs that part of the URL, use the special ’static’ URL name:

url_for(’static’, filename=’style.css’)

The file has to be stored on the filesystem as static/style.css.

Rendering Templates:

from flask import Flask, render_template

@app.route(’/hello/’)

def hello(name=None):

return render_template(’hello.html’, name=name)

Template:

e template: {% if name %}

Hello {{ name }}!

{% else %}

Hello World!

{% endif %}

UPLOAD DE ARQUIVOS:

from flask import Flask, request

@app.route(’/upload’, methods=[’GET’, ’POST’])


def upload_file():

if request.method == ’POST’:

f = request.files[’the_file’]

f.save(’/var/www/uploads/uploaded_file.txt’)

REDIRECT:

from flask import Flask, abort, redirect, url_for

@app.route(’/’)

def index():

return redirect(url_for(’login’))

@app.route(’/login’)

def login():

abort(401) this_is_never_executed()

LOGIN

from flask import Flask, session, redirect, url_for, escape, request


app = Flask(__name__)
@app.route(’/’)
def index():
if ’username’ in session:
return ’Logged in as %s’ % escape(session[’username’])
return ’You are not logged in’
@app.route(’/login’, methods=[’GET’, ’POST’])
def login():
if request.method == ’POST’:
session[’username’] = request.form[’username’]
return redirect(url_for(’index’))
return ’’’
<form action="" method="post">
<p><input type=text name=username>
<p><input type=submit value=Login>
</form>
’’’
@app.route(’/logout’)
def logout(): # remove the username from the session if its there
session.pop(’username’, None)
return redirect(url_for(’index’))
# set the secret key.
import os

app.secret_key = os.urandom(24)

FLASH:

Fornecer um arquivo estático do código (JSON)


Na pasta static, crie um arquivo de dados JSON estático chamado data.json

"01": {

"note" : "Data is very simple because we're demonstrating only the mechanism."

@app.route('/api/data')

def get_data():

return app.send_static_file('data.json')

Usar um arquivo estático em um modelo


Crie um arquivo chamado site.css

.message {

font-weight: 600;

color: blue;

<html>

<head>

<title>{{ title }}</title>

<link rel="stylesheet" type="text/css" href="/static/site.css" />

</head>

<body>

<span class="message">{{ message }}</span>{{ content }}

</body>
</html>

Usando datas

from datetime import datetime

from flask import render_template

from HelloFlask import app

@app.route('/')

@app.route('/home')

def home():

now = datetime.now()

formatted_now = now.strftime("%A, %d %B, %Y at %X")

html_content = "<html><head><title>Hello Flask</title></head><body>"

html_content += "<strong>Hello Flask!</strong> on " + formatted_now

html_content += "</body></html>"

return html_content

<html>

<head><title>Hello Flask</title></head>

<body>

{{ content }}

</body>

</html>

Usando o método render_template

def home():

now = datetime.now()

formatted_now = now.strftime("%A, %d %B, %Y at %X")

return render_template(
"index.html",

content = "<strong>Hello, Flask!</strong> on " + formatted_now)

<html>

<head>

<title>{{ title }}</title>

</head>

<body>

<strong>{{ message }}</strong>{{ content }}

</body>

</html>

def home():

now = datetime.now()

formatted_now = now.strftime("%A, %d %B, %Y at %X")

return render_template(

"index.html",

title = "Hello Flask",

message = "Hello, Flask!",

content = " on " + formatted_now)

Jasonify

from flask import jsonify, Flask


appFlask = Flask(__name__)
@appFlask.route('/home')
def home():
return jsonify(username='eduCBA' ,
account='Premium' ,
validity='200 days')
if __name__ == "__main__":
appFlask.run(debug=True)
Dictionary ={'username':'eduCBA' ,
'account':'Premium' , 'validity':'2709 days'}
return jsonify(Dictionary)
Adicionar imagem:
from flask import Flask, render_template, redirect, url_for,
request# Route for handling the login page logic
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
return render_template('home.html')#within app.route add
the html page we are doing changes to
@app.route('/register')
# def is normally how we define a function in python
def register():
return
render_template('register.html')@app.route('/registerV')
def registerV():
return render_template('registerV.html')

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
</head><body>
<div class="bd-example" align="middle">

<img src="{{url_for('static',
filename='Hermes.png')}}align="middle" />

</div>
</body>
</html>

Formulário de login

<html>
<corpo>
<form action = método "http://localhost:5000/login" = "post">
<tabela>
<tr><td>Nome</td>
<td><input type ="text" name ="uname"></td></tr>
<tr><td>Senha</td>
<td><input type ="password" name ="pass"></td></tr>
<tr><td><input type = "submit"></td></tr>
</tabela>
</formulário>
</corpo>
</html>
a partir da importação do balão *
app = Flask(__name__)

@app.route('/login',methods = ['POST'])
def login():
uname=request.form['uname']
passwrd=request.form['passar']
if uname=="ayush" e passwrd=="google":
return "Bem-vindo %s" %uname

se __name__ == '__main__':
app.run(debug = True)

Flask-SQLAlchemy é uma extensão Flask que fornece suporte para a biblioteca


SQLAlchemy, que é uma biblioteca Python popular para interagir com bancos
de dados. Ele simplifica o uso do SQLAlchemy no Flask, dando-lhe padrões úteis
e auxiliares extras que facilitam o uso do SQLAlchemy com o Flask.

Para usar o Flask-SQLAlchemy, você precisará instalar o Flask e o SQLAlchemy.


Você pode fazer isso executando o seguinte comando:

pip install flask sqlalchemy

Depois de ter essas bibliotecas instaladas, você pode usar o Flask-SQLAlchemy


criando um aplicativo Flask e, em seguida, inicializando a extensão Flask-
SQLAlchemy com o aplicativo.

Aqui está um exemplo de como criar um aplicativo Flask simples com um banco
de dados SQLite usando Flask-SQLAlchemy:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =
'sqlite:///test.db'
db = SQLAlchemy(app)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True,
nullable=False)
email = db.Column(db.String(120), unique=True,
nullable=False)

db.create_all()

Este exemplo cria um modelo simples com três campos: , e . O campo é uma
chave primária inteira, enquanto os campos e são cadeias de caracteres com
restrições exclusivas e não anuláveis.Useridusernameemailidusernameemail

Depois de definir seus modelos, você pode usar o Flask-SQLAlchemy para criar,
ler, atualizar e excluir registros no banco de dados usando o objeto. Por
exemplo, você pode criar um novo usuário no banco de dados da seguinte
forma:db

new_user = User(username='john',
email='john@example.com')
db.session.add(new_user)
db.session.commit()
Você também pode consultar o banco de dados usando o método. Por exemplo, você
pode recuperar uma lista de todos os usuários no banco de dados da seguinte
forma:db.session.query()

users = User.query.all()
É possível usar o Matplotlib com Flask para criar gráficos dinâmicos que podem
ser atualizados em tempo real. Para fazer isso, você precisará usar Matplotlib e
classes para criar o gráfico e, em seguida, converter o gráfico para um formato
que pode ser exibido em um navegador da Web, como uma imagem ou um
documento HTML.FigureFigureCanvas

Aqui está um exemplo de como usar o Matplotlib com o Flask para criar um
gráfico de linhas simples:

from flask import Flask, render_template


import matplotlib.pyplot as plt
import io
import base64

app = Flask(__name__)

@app.route('/')
def index():
# Generate the plot
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')

# Convert plot to PNG image


buf = io.BytesIO()
plt.savefig(buf, format='png')
buf.seek(0)
image_data =
base64.b64encode(buf.getvalue()).decode('utf-8')

# Render the template


return render_template('index.html',
image_data=image_data)

if __name__ == '__main__':
app.run()

Neste exemplo, definimos uma rota que gera um gráfico de linhas simples
usando a função e a função de Matplotlib. Em seguida, convertemos o gráfico
em uma imagem PNG usando a função e a classe para criar um objeto
semelhante a um arquivo que pode ser usado para armazenar os dados da
imagem. Finalmente, codificamos os dados da imagem como uma cadeia de
caracteres base64 e os passamos para o modelo. plotylabelsavefigBytesIO

No modelo, podemos exibir a imagem usando uma tag: <img>

<html>
<body>
<img src="data:image/png;base64,
{{ image_data }}">
</body>
</html>

Neste exemplo, importamos as extensões Flask e Flask-Matplotlib e criamos um


aplicativo Flask. Em seguida, criamos uma instância da extensão e passamos a
ela o aplicativo Flask.Matplotlib

Em seguida, definimos uma rota que exibe um gráfico Matplotlib. Criamos um


gráfico de linhas simples usando a função de Matplotlib e, em seguida,
retornamos o gráfico como uma cadeia de caracteres HTML usando a
função.plotto_html

Para renderizar o gráfico em um navegador da Web, você pode usar a função


do Flask e passar a cadeia de caracteres HTML como uma variável de modelo.
Por exemplo:render_template
from flask import Flask
from flask_matplotlib import Matplotlib
import matplotlib.pyplot as plt

app = Flask(__name__)
Matplotlib(app)

@app.route('/plot')
def plot():
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
return plt.to_html()

@app.route('/plot')

def plot():

x = [1, 2, 3, 4]

y = [1, 4, 9, 16]

plt.plot(x, y)

plot_html = plt.to_html()

return render_template('plot.html', plot=plot_html)

Neste exemplo, definimos uma rota que gera um gráfico usando Matplotlib e o
retorna como uma imagem PNG. A função cria um gráfico usando as funções e
do módulo e salva-o em um arquivo de imagem usando a função. Em seguida,
usamos a classe do módulo para criar um fluxo binário para armazenar os
dados da imagem e o método para definir o ponteiro do fluxo para o início do
arquivo. Finalmente, usamos a função do Flask para enviar o arquivo de imagem
para o cliente./plot.pngplotplotylabelpyplotsavefigBytesIOioseeksend_file
Em seguida, você pode exibir o gráfico em um modelo Flask usando uma tag
com o atributo definido para a URL da rota do gráfico: <img>src

import io

import matplotlib.pyplot as plt

from flask import send_file

@app.route('/plot.png')

def plot():

plt.plot([1, 2, 3, 4])

plt.ylabel('some numbers')

img = io.BytesIO()

plt.savefig(img, format='png')

img.seek(0)

return send_file(img, mimetype='image/png')

<img src="/plot.png">

Para renderizar um modelo em um aplicativo Flask, você pode usar a função do


módulo Flask. Essa função usa o nome do arquivo de modelo e uma lista de
variáveis e retorna o modelo renderizado como um objeto de
resposta.render_templaterender_template

Aqui está um exemplo de como renderizar um modelo em um aplicativo Flask:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')

def index():

return render_template('index.html', title='Home')

if __name__ == '__main__':

app.run()
Neste exemplo, criamos um aplicativo Flask e definimos uma rota que retorna o
modelo. A função usa o nome do arquivo de modelo e uma variável e retorna o
modelo renderizado com a variável substituída por seu
valor./index.htmlrender_templatetitletitle

Os modelos são normalmente armazenados em uma pasta no diretório raiz do


aplicativo Flask. Os arquivos de modelo podem conter conteúdo HTML estático,
bem como variáveis e diretivas de modelo Jinja. Por exemplo, o modelo pode
ter esta aparência:templatesindex.html

<html>

<head>

<title>{{ title }}</title>

</head>

<body>

<h1>Welcome to the {{ title }} page!</h1>

</body>

</html>

Neste exemplo, a variável é colocada entre chaves duplas e será substituída por seu
valor quando o modelo for renderizado.title

A função no Flask é uma forma de exibir mensagens temporárias para o usuário.


Ele normalmente é usado para exibir mensagens de sucesso ou erro após um
envio de formulário ou outra ação.flash

Para usar a função em um aplicativo Flask, você precisa configurar as


mensagens no aplicativo e exibi-las no modelo. flashflash

Aqui está um exemplo de como usar a função em um aplicativo Flask: flash

from flask import Flask, flash, render_template, request, redirect

app = Flask(__name__)

app.secret_key = 'some secret key'

@app.route('/')
def index():

return render_template('index.html')

@app.route('/login', methods=['GET', 'POST'])

def login():

if request.method == 'POST':

if request.form['username'] == 'admin' and request.form['password'] == 'secret':

flash('You were successfully logged in')

return redirect('/')

else:

flash('Invalid username or password')

return render_template('login.html')

if __name__ == '__main__':

app.run()

Neste exemplo, temos uma rota que lida com solicitações GET e POST. Se o
método de solicitação for POST, a função verificará o nome de usuário e a
senha enviados no formulário e exibirá uma mensagem de êxito ou erro usando
a função. A função usa uma mensagem como um argumento e a armazena em
uma sessão.loginflashflash

Para exibir as mensagens flash no modelo, você pode usar um bloco de modelo
Jinja para iterar sobre as mensagens flash e exibi-las:

{% for message in get_flashed_messages() %}

<div class="alert alert-danger">{{ message }}</div>

{% endfor %}

Neste exemplo, a função retorna uma lista de mensagens flash armazenadas na sessão
e o loop itera sobre as mensagens e as exibe em um elemento com as classes
and.get_flashed_messagesfordivalertalert-danger

A função no Flask é uma maneira de gerar URLs para rotas específicas no


aplicativo. Ele usa o nome da rota e quaisquer argumentos adicionais e retorna
a URL dessa rota.url_for
Aqui está um exemplo de como usar a função em um aplicativo Flask: url_for

from flask import Flask, render_template, url_for

app = Flask(__name__)

@app.route('/')

def index():

return render_template('index.html')

@app.route('/login')

def login():

return 'Login page'

@app.route('/user/<username>')

def profile(username):

return 'Profile page for user {}'.format(username)

if __name__ == '__main__':

app.run()

Neste exemplo, temos três rotas: , , e . Para gerar as URLs para essas rotas, você pode
usar a função em um modelo ou função de exibição: //login/user/<username>url_for

# In a template

<a href="{{ url_for('index') }}">Home</a>

<a href="{{ url_for('login') }}">Login</a>

<a href="{{ url_for('profile', username='john') }}">John's profile</a>

# In a view function

return redirect(url_for('index'))

No exemplo de modelo, a função gera as URLs para o , e roteia e passa o


argumento para a rota. No exemplo da função de exibição, a função gera a URL
da rota e redireciona o cliente para essa
URL.url_forindexloginprofileusernameprofileurl_forindex

Espero ter ajudado! Deixe-me saber se você tiver alguma dúvida.

Flask-SQLAlchemy é uma extensão Flask que adiciona suporte para a biblioteca


SQLAlchemy ao seu aplicativo Flask. Ele permite que você use a poderosa
biblioteca principal SQLAlchemy para se conectar a bancos de dados, definir
modelos e consultar dados, tudo de dentro de um aplicativo Flask.

Aqui está um exemplo de como usar o Flask-SQLAlchemy em um aplicativo


Flask:

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/mydatabase'

db = SQLAlchemy(app)

class User(db.Model):

id = db.Column(db.Integer, primary_key=True)

username = db.Column(db.String(80), unique=True, nullable=False)

email = db.Column(db.String(120), unique=True, nullable=False)

db.create_all()

Neste exemplo, importamos as extensões Flask e Flask-SQLAlchemy e criamos


um aplicativo Flask. Em seguida, configuramos a configuração para apontar
para nosso banco de dados e criar uma instância passando-a pelo aplicativo
Flask.SQLALCHEMY_DATABASE_URISQLAlchemy

Em seguida, definimos um modelo que representa um usuário em nosso banco


de dados. O modelo tem três campos: , , e . Definimos esses campos como
objetos e especificamos seus tipos de dados e quaisquer opções adicionais,
como se eles são anuláveis ou exclusivos.Useridusernameemaildb.Column
Finalmente, chamamos o método do objeto para criar as tabelas no banco de
dados.create_alldb

Em seguida, você pode usar o modelo para criar, ler, atualizar e excluir usuários
no banco de dados. Por exemplo:User

# Create a new user

new_user = User(username='john', email='john@example.com')

db.session.add(new_user)

db.session.commit()

# Query users

users = User.query.all()

print(users)

# Update a user

user = User.query.get(1)

user.email = 'john@example.net'

db.session.commit()

# Delete a user

user = User.query.get(1)

db.session.delete(user)

db.session.commit()

You might also like