Django Show

Preview:

Citation preview

Django Show

Um pouco sobre mim

● Formado em Ciência da Computação● Entusiasta de Python e Django● Colaborador do DjangoBrasil e do PythonBrasil

● Desenvolvedor na globo.com

Django Show não é...

● Um show de uma boy band● Uma apresentação de um indiano cantando barby girl

● Nem uma demonstração de magia

Welcome to the Django!

Arquitetura

● Model● View● Template

Model

from django.db import modelsfrom datetime import datetime

class Link(models.Model): title = models.CharField(max_length = 255) date = models.DateTimeField(default = datetime.now) url = models.URLField(verify_exists = False) description = models.CharField(max_length = 255)

def __unicode__(self): return self.description

View

from django.shortcuts import render_to_responsefrom models import Link

def index(request): links = Link.objects.all() return render_to_response('index.html', {'links':links})

Template{% extends "base.html" %}

{% block content %}

{% for link in links %} <p> <a href="{{ link.url }}"> {{ link.title }} </a> - {{ link.date|date:"d/m/Y" }} </p>{% endfor %}

{% endblock %}

Manipulando os dados>>> from mysite.bookmarks.models import *>>> l = Link()

>>> l.title = 'Python Brasil'>>> l.description = 'Site da comunidade Python no Brasil'>>> l.url = 'http://www.pythonbrasil.com.br'>>> l.save()>>> l<Link: Site da comunidade Python no Brasil>>>> l = Link()>>> l.title = 'Django Brasil'>>> l.description = 'Site da comunidade Django no Brasil'>>> l.url = 'http://www.djangobrasil.org'>>> l.save()>>>

Geração de Formulários

● Model x View x Template● Model x View (Forms + Metodos) x Templates

from django.forms import ModelFormfrom models import Link

class LinkForm(ModelForm):

class Meta: model = Link

Interface de Administração

● Model x ModelAdmin

from django.contrib import adminfrom models import Link

admin.site.register(Link)

Middleware

views

Middleware

MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',)

Algumas middlewares

● Session● Authentication● Log● Gzip

Mitos e verdades

● Django e monolítico● Django não escala● O deploy no Django é difícil e complicado

Django e ZODB

● desafio ou loucura? =)

import ZODB.config

class ZODBConnection(object):

def __init__(self): db = ZODB.config.databaseFromURL(zodb_url)

connection = db.open() self.root = connection.root()

ZODBInstance = ZODBConnection()

from djangozodb import ZODBInstance

class ZODBSession(object): def process_request(self, request): request.zodb = ZODBInstance

Outros exemplos

● Django + SQLAlchemy (tranquil)● Django + Storm● Django + CouchDb● Django + SQLObject● Django + Seu ORM Favorito● Django + BigTable on Google App Engine

Mais um exemplo

● Django + REST

Cache

● Cache em disco● Cache em memória● Cache em banco

Cache

● Cache em disco● Cache em memória● Cache em banco ???? =\

Deploy

● Apache = mod_python● Apache = mod_wsgi● Apache = fast_cgi● Lighttpd = fast_cgi● Nginx = fast_cgi● ...

Em todo lugar...

● Cpython● Jython● IronPython● PyPy ?????

Em todo lugar...

● Cpython● Jython● IronPython● PyPy =)

Extra

● Authentication Backend● Signals● Django + {{ sua template system }}

Duvidas?

● Andrews Medina● andrewsmedina@gmail.com● http://www.andrewsmedina.com