---
title: "Projeto de exemplos em Python com Flask"
description: "Projeto de exemplos em Python com Flask que usa o Rest PKI com o Web PKI: como executar com pip e flask run e onde achar cada recurso."
canonical: "https://docs.lacunasoftware.com/articles/rest-pki/python/flask"
locale: "pt-BR"
product: "Rest PKI (legado)"
last_updated: "2026-07-14"
---

# Projeto de exemplos em Python com Flask

O **Projeto de exemplos em Python com Flask** mostra como usar o [Rest PKI](https://docs.lacunasoftware.com/articles/rest-pki) junto com [Web PKI](https://docs.lacunasoftware.com/articles/web-pki) em um projeto Python usando o framework [Flask](http://flask.pocoo.org/). Está hospedado no GitHub em:

https://github.com/LacunaSoftware/PkiSuiteSamples/tree/master/python/flask

## Executando o projeto

1. [Download do projeto](https://github.com/LacunaSoftware/PkiSuiteSamples/archive/master.zip) ou clonar o repositório
1. Instale as dependências: `pip install -r requirements.txt`
1. Veja o ambiente variável `FLASK_APP` para definir o nome do aplicativo que deve executar: `FLASK_APP=sample`
1. Execute a aplicação web: `flask run`
1. Acesse a URL [http://localhost:5000](http://localhost:5000)

## Mapa do projeto

Esta seção mostra onde encontrar partes relevantes em cada amostra de recurso do projeto.

### Autentificação com certificação digital

* View: [authentication_rest.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/authentication_rest.py)
* Templates:
  * [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/authentication_rest/index.html) (JavaScript on [signature-form.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/static/js/signature-form.js))
  * [complete.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/authentication_rest/complete.html)

### Assinatura PAdES com arquivo já no servidor

* View: [pades_signature_rest.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/pades_signature_rest.py)
* Templates:
  * [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/pades_signature_rest/index.html) (JavaScript on [signature-form.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/static/js/signature-form.js))
  * [complete.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/pades_signature_rest/complete.html)

### Assinatura PAdES com arquivo enviado pelo usuário

Após o upload do arquivo (implementado apenas para demonstração na view [server_files.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/server_files.py) e template [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/server_files/index.html)) o fluxo de controle é o mesmo que na amostra [Assinatura PAdES com arquivo já no servidor](https://docs.lacunasoftware.com/articles/rest-pki/python/flask#pades), mas com o parâmetro URL `userfile` preenchido.

### Co-assinatura PAdES

Após o fluxo de controle da amostra [Assinatura PAdES com arquivo já no servidor](https://docs.lacunasoftware.com/articles/rest-pki/python/flask#pades) for concluído e o link *Co-assinatura com outro certificado* for clicado, o mesmo fluxo de controle é repetido, mas agora com o parâmetro URL `userfile` preenchido.

### Marcas PAdES

Não avaliado neste projeto ainda.

### Assinatura PAdES usando chave do servidor

Não avaliado neste projeto ainda.

### Assinatura PAdES sem comunicação do cliente

Não avaliado neste projeto ainda.

### Abrir/Validar uma assinatura PAdES existente

Não avaliado neste projeto ainda.

### Versão para impressão

Não avaliado neste projeto ainda.

### Assinatura CAdES com arquivo já no servidor

* View: [cades_signature_rest.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/cades_signature_rest.py)
* Templates:
  * [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/cades_signature_rest/index.html) (JavaScript em [signature-form.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/static/js/signature-form.js))
  * [complete.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/cades_signature_rest/complete.html)

### Assinatura CAdES com arquivo enviado pelo usuário

Após o upload do arquivo (implementado apenas para demonstração na view [server_files.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/server_files.py) e template [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/server_files/index.html)) o fluxo de controle é o mesmo que na amostra [Assinatura CAdES com arquivo já no servidor](https://docs.lacunasoftware.com/articles/rest-pki/python/flask#cades), mas com o parâmetro URL `userfile` preenchido.

### Co-assinatura CAdES

Após o fluxo de controle da amostra [Assinatura CAdES com arquivo já no servidor](https://docs.lacunasoftware.com/articles/rest-pki/python/flask#cades) for concluído e o link *Co-assinatura com outro certificado* for clicado, o mesmo fluxo de controle é repetido, mas agora com o parâmetro URL `cmsfile` preenchido.

### Assinatura CAdES usando chave do servidor

Não avaliado neste projeto ainda.

### Abrir/Validar uma assinatura CAdES existente

Não avaliado neste projeto ainda.

### Assinatura XML de um documento inteiro

* View: [xml_signature_rest.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/xml_signature_rest.py)
* Templates:
  * [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/xml_signature_rest/index.html)
  (JavaScript em [signature-form.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/static/js/signature-form.js))
  * [complete.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/xml_signature_rest/complete.html)

### Assinatura XML de um elemento

* View: [xml_signature_rest.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/xml_signature_rest.py)
* Templates:
  * [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/xml_nfe_signature_rest/index.html) (JavaScript em [signature-form.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/static/js/signature-form.js))
  * [complete.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/xml_nfe_signature_rest/complete.html)

### Assinatura XadES de um elemento

Não avaliado neste projeto ainda.

### Lote de assinaturas PAdES

* View: [batch_pades_signature_rest.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/batch_pades_signature_rest.py)
* Template: [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/batch_pades_signature_rest/index.html) (JavaScript em [batch-signature-rest-form.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/static/js/batch-signature-rest-form.js)) 

### Lote otimizado de assinatura PAdES

Não avaliado neste projeto ainda.

### Lote de assinaturas CAdES

* View: [batch_cades_signature_rest.py](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/views/batch_cades_signature_rest.py)
* Template: [index.html](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/templates/batch_cades_signature_rest/index.html) (JavaScript em [batch-signature-rest-form.js](https://github.com/LacunaSoftware/PkiSuiteSamples/blob/master/python/flask/sample/static/js/batch-signature-rest-form.js))

### Lote de assinaturas XML de elementos do mesmo documento

Não avaliado neste projeto ainda.
