Python para web com django
Olar
Jonhnatha Trigueiro
A.k.a "Joey"
Software Engineer
@ Nexus Edge
Python
O que é
- Linguagem de programação
- De propósito geral
- Orientada à objetos
- Interpretada
- Estável
- Múltiplas implementações
- Bem documentada
kivy.org/
https://readthedocs.org/projects/python-gtk-3-tutorial/
Django
Vantagens
- Desenvolvimento Acelerado;
- Django Admin <3;
- Customizável;
- Comunidade fervorosa;
- ORM e Migrações;
- Extensível;
- Ready out of the box!
Hello django
Miniagenda
Jogo rápido
from django.db import models
class Contato(models.Model):
nome = models.CharField(max_length=100)
telefone = models.CharField(max_length=32)
def __unicode__(self):
return self.nome
agenda/models.py
from django.contrib import admin
from agenda.models import Contato
admin.site.register(Contato)
agenda/admin.py
# (...) CODE
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'agenda'
]
# (...) CODE
pythondaynatal/settings.py
Estrutura
padrão
database
migrações
BEGIN;
--
-- Create model Contato
--
CREATE TABLE "agenda_contato"
("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"nome" varchar(100) NOT NULL, "telefone" varchar(32) NOT NULL);
COMMIT;
python manage.py sqlmigrate agenda 0001
database no django
- Não toca no SQL
- Prepara a evolução do banco
- Mesmo modelo, qualquer banco
- Prazer, Database Refactoring
extensões
Vamos ver o que tem?
PIP
Pacotes
7717
(até agora)
Django packages
https://www.djangopackages.com/
no servidor
ideia de como funciona
Acionando
lampadas?!
Como seria possível?
- Django
- PySerial
- Arduino
Página com ação
- Django processa ação na view;
- Na view abre a porta serial;
- Escreve comando via serial;
- Arduino Interpreta comando e liga lâmpada.
liga_desliga.ino
// pins for the LEDs:
const int redPin = 13;
void setup() {
Serial.begin(9600);
pinMode(redPin, OUTPUT);
}
void loop() {
while (Serial.available() > 0) {
char serial_data = Serial.read();
if (serial_data == '1') {
digitalWrite(redPin, HIGH);
} else {
digitalWrite(redPin, LOW);
}
}
}
leds/views.py
from django.shortcuts import HttpResponse, render
import serial
port = serial.Serial('/dev/cu.usbmodem641', baudrate=9600)
def liga(request):
port.write('1')
return HttpResponse('Deve ter ligado =p
<a href="javascript:history.back(-1)">VOLTAR</a>')
def desliga(request):
port.write('0')
return HttpResponse('Deve ter Desligado :D
<a href="javascript:history.back(-1)">VOLTAR</a>')
def led(request):
return render(request, 'index.html')
def cam(request):
return render(request, 'cam.html')
Deploy
Usando fabric
Métricas
com opbeat
GeoDjango
Two Scoops
Of django
Dúvidas?
Obrigado ;)
@jjrt42
fb.com/joepreludian
joepreludian.github.io
Django
By Jonhnatha Trigueiro
Django
- 1,470