Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Servindo media files
# coding: utf-8
import os
from werkzeug import secure_filename
from flask import Flask, request, url_for, current_app, send_from_directory
from db import noticias
app = Flask("wtf")
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
app.config['MEDIA_ROOT'] = os.path.join(PROJECT_ROOT, 'media_files')
# por enquanto vamos usar um template html hardcoded
# mas calma! em breve falaremos sobre os templates com Jinja2
base_html = u"""
<img src="{logo_url}" />
<hr />
@app.route("/noticias/cadastro", methods=["GET", "POST"])
def cadastro():
if request.method == "POST":
dados_do_formulario = request.form.to_dict()
imagem = request.files.get('imagem')
if imagem:
filename = secure_filename(imagem.filename)
path = os.path.join(current_app.config['MEDIA_ROOT'], filename)
dados_do_formulario['imagem'] = filename
nova_noticia = noticias.insert(dados_do_formulario)
return u"""
<h1>Noticia id %s inserida com sucesso!</h1>
<a href="%s"> Inserir nova notícia </a>
""" % (nova_noticia, url_for('cadastro'))
else: # GET
formulario = u"""
<form method="post" action="/noticias/cadastro"
<label>Titulo:<br />
<input type="text" name="titulo" id="titulo" />
<br />
<label>Texto:<br />
<textarea name="texto" id="texto"></textarea>
<br />
<label> Imagem:<br />
<input type="file" name="imagem" id="imagem" />
<input type="submit" value="Postar" />
return base_html.format(
title=u"Inserir nova noticia",
logo_url=url_for('static', filename='generic_logo.gif')
def index():
noticia_template = u"""
<a href="/noticia/{noticia[id]}">{noticia[titulo]}</a>
# it's a kind of magic :)
todas_as_noticias = [
for noticia in noticias.all()
return base_html.format(
title=u"Todas as notícias",
body=u"<br />".join(todas_as_noticias),
logo_url=url_for('static', filename='generic_logo.gif')
def noticia(noticia_id):
noticia = noticias.find_one(id=noticia_id) # query no banco de dados
if noticia.get('imagem'):
imagem_url = url_for('media', filename=noticia.get('imagem'))
imagem_url = ""
noticia_html = u"""
<img src="{imagem_url}">
<hr />
) # remember, Python is full of magic!
return base_html.format(
logo_url=url_for('static', filename='generic_logo.gif')
def media(filename):
return send_from_directory(current_app.config.get('MEDIA_ROOT'), filename)
if __name__ == "__main__":, use_reloader=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.