Pesquisar este blog

Mostrando postagens com marcador web. Mostrar todas as postagens
Mostrando postagens com marcador web. Mostrar todas as postagens

terça-feira, 26 de janeiro de 2010

Django Snippets - Soluções em Django

Senhores, hoje a postagem será de utilidade pública. Resolvi falar sobre esse excelente (com ressalvas) repositório de códigos para Django, prontos para serem usados.


Para quem não sabe, o Django é um excelente framework de desenvolvimento para web com python. Ele te permite criar aplicações seguras e robustas em pouco tempo. Mesmo o Django sendo "super cool", seu código é bastante enxuto, de várias maneiras. Os desenvolvedores escolheram por adicionar "pouca" coisa ao código padrão do framework, permitindo que houvesse poucas dependências. Assim, se você quer algo diferente, você tem que fazer. "Você" entre aspas! Caso você conheça o django snippets, poderá utilizar soluções bastante interessantes desenvolvidas por diversas pessoas de todo o mundo.

O funcionamento do django snippets é bem simples, existe o site de snippets onde as pessoas vão e postam suas soluções, que são tornadas públicas. Caso alguém encontre um problema na sua solução, elas podem, por exemplo, sugerir uma mudança. Infelizmente, o site não permite buscas das formas usuais. Basicamente, se você quer procurar um snippet, você deve usar o google ou procurar, página por página, na lista de snippets disponível.

Como exemplo de snippets legais que você pode usar tem o snippet de recaptcha que te permite adicionar um captcha a um formulário de busca, por exemplo, sem grandes problemas. snippet

Ou código legal é este que te permite criar objetos de paginação que tornam bastante fácil criar o Look&Feel do digg no seu site. Eu, particularmente, o utilizado no django-forumbr.

Existe uma infinidade de outros snippets que podem lhe agradar. Sugiro doar 15minutos do seu tempo, um dia desses, para averiguar o repositório do Django Snippets. No mais, é isso. Abração, senhores!

quinta-feira, 12 de novembro de 2009

DjangoCMS2 - O primeiro Killer App do Django!!!


A muito tempo que os desenvolvedores que utilizam Django como framework Web reclamam da falta de aplicativos CMS de qualidade para integração em seus projetos. Enquanto outras plataformas possuem soluções poderosas como é o caso do Wordpress, no Django, caso o desenvolvedor não quisesse se sujeitar a aplicativos bugados ou aquém de suas necessidades, era obrigado a escrever seu próprio aplicativo CMS, o que não é lá tão trivial.

Outra solução, bem menos elegante, consiste em utilizar o aplicativo que vem junto com o django, chamado flatpages, que permite criar páginas simples em html. Algo bem aquém do que seria elegante.



Devido a isso, venho, a muito tempo, olhando sites de todo gênero em busca de uma solução CMS para django que fosse fácil e prática. O DjangoCMS sempre me pareceu um projeto promissor e ativo, nesse sentido, mas, as versões que eue testava sempre apresentavam muitos bugs. Não eram versões finais, é verdade, mas mesmo assim estavam longe de ser algo utilizável.

Hoje, ao acordar, me deparo com a notícia que o django-cms não era mais uma versão alpha, nem beta, nem RC, era sua versão final, o que me compeliu, rapidamente, a testá-lo. Quão grande foi minha surpresa quando vislumbrei suas funcionalidades e praticidade. Em minutos, com uma pequena ajudinha da lista (#django-cms no FreeNode) consegui colocar em pé o aplicativo.

Tendo todo o seu sistema de conteúdo baseado plugins e utilizando placeholders para definir onde cada plugin deve ficar, essa solução me agradou muito. Os desenvolvedores tendo feito todo um trabalho de integração com o admin, que é a interface padrão de edição da ferramenta, deixou tudo agradável e intuitivo.

Ao meu ver, o django-cms2 (ou django-cms) é a melhor solução em CMS para o Django no momento. Aconselhado! Abraço!

ps: para quem não sabe, killer app é um aplicativo tão bom que os aplicativos concorrentes se tornam obsoletos rapidamente.

quinta-feira, 25 de dezembro de 2008

web.py com jinja2!

Primeiramente, Feliz Natal meu povo! rsrsrs, meu natal não foi grande coisa, passei doente em casa, mas o de vocês pode ter sido massa, não é mesmo? Bem, de qualquer forma, os panettones vão entrar em promoção e a vida será bela novamente!

Agora, planejamentos para o final de ano. Vamo ver oq a prefeita vai aprontar.

De qualquer forma, a idéia aqui é falar da utilização do jinja2 com o web.py. Para quem não sabe, o web.py é um framework minimalista escrito em python, que foca na criação de pequenos sites que precisam ficar prontos logo, não tem grandes perspectivas de crescimento, e precisam ser rápidos.

O web.py é um framework bem completo, levando em conta o que ele se propõe a fazer. Ele te oferece uma camada de abstração sobre os templates(arquivos html), sobre o modelo(o banco de dados), e sobre a camada de negócios(a lógica do aplicativo). Tudo de forma bem simples, entretanto, para algumas pessoas, isso não é o bastante.

Bem, eu venho de um bom tempo de desenvolvimento com django, então, eu estou acustumado(e gosto) ao estilo de templates do django. Códigos python nos meus templates, nem na base de bala! Então, quando fui tentar utilizar o web.py para fazer um site aqui, a primeira coisa que notei era que o sistema de templates dele era bem feio e difícil(não tão fácil quanto poderia). Então, conhecendo o jinja2, que é um sistema de templates semelhante ao do django, resolvi logo testá-lo no meu aplicativo.

Procedimento
Usar bibliotecas que não são do web.py no web.py é bem fácil. Adicione o jinja2 dentro do seu projeto, do lado do pacote web contendo o código do framework web.py. Nisso, a partir do código principal do seu aplicativo(onde você configura a url e o quê fica onde), você adiciona o jinja2, cria um environment para ele, e usa para fazer a renderização dos templates. Vejamos como ficaria um código exemplo:

# módulo do python
import os

# importando o que precisamos do jinja2
from jinja2 import Environment
from jinja2 import FileSystemLoader
from jinja2 import TemplateNotFound, TemplateSyntaxError

# dicionário com as configurações do ambiente
env_config = {
# marque com True para que o Jinja procure por atualizações no template
"auto_reload":False,
# marque com True para que todos os templates sejam "escaped"
"autoescape":False,
# define quantas páginas ficarão no cache por vez
"cache_size":50,
# ser para adicionar tags {% nome %} aos templates.
"extensions":[],
# templates loader. Tupla que informa ao jinja2 onde procurar os templates
"loader":FileSystemLoader(TEMPLATE_DIRS),
}

# os templates serão carregados a partir do objeto env, que é uma instância de
# environment
env = Environment(**env_config)

# path é o caminho (relativo aos caminhos do TEMPLATE_DIRS) para o template
# vars é um dicionário com variáveis a serem disponibilizados no template
def render(path, vars):
try:
# templates are automatically cached
template = env.get_template(path)
except TemplateNotFound:
raise TemplateNotFound(path)
except TemplateSyntaxError:
raise TemplateSyntaxError(path)
return template.render(vars)

Bem, o código acima funciona bem, mas colocá-lo junto com o arquivo principal do ambiente não é uma boa. Sugiro que você crie um arquivo view.py e coloque o código acima dentro, e a partir das classes que processam as requisições(Handlers) você chame o método render de view.

Outra dica é colocar para que a classe Handler busque templates que possuam o seu nome. Por exemplo, um handler Casa na classe Barco devolveria o template barco/casa.html. Essa é uma prática legal que já economiza algum código.

Bem, de qualquer forma, é isso. Vou aqui brincando com o web.py até achar algo que me faça sair dele. rsrsrs, ou não. bem, ele é minimalista, então, para coisinhas, acho que vou sempre usar ele.

ps: depois posto um template para projetos web.py, com classes e pastas para facilitar a vida de quem desenvolve.

Até mais e boas festividades!

quinta-feira, 4 de setembro de 2008

Fatos históricos devem ser celebrados!!!

Bem, vocês sabem que não é qualquer coisa que entra no meu blog(haha!), rsrsrs, mas hoje, o negócio é diferente. Há um fato histórico a ser comemorado, e um moribundo a ser lamentado.

Primeiro, às boas notícias.
Certa vez, o homem pisou na Lua...
Certa vez, a camisinha feminina foi descoberta...
Certa vez, a linguagem python foi criada...
E é nesse contexto, de fatos históricos que influenciaram diretamente na história da humanidade que venho anunciar outro fato histórico! Algo que revolucionará a entidade virtual conhecida como WEB. Um marco na história do homem. Comparável à descoberta da roda.

O FRAMEWORK DE DESENVOLVIMENTO WEB DJANGO CHEGA A SUA VERSÃO 1.0 COM MUITO LOUVOR, ESTABILIDADE E PYTHON >: D

Isso mesmo negada; depois de vários anos de desenvolvimento, cuidado e carinho, o melhor framework de desenvolvimento web chega à sua primeira versão estável e madura. Interessados em conhecer céu http, o melhor do python para desenvolvimento web, confiram o bixinho aqui
http://www.djangoproject.com/download/

Python na veia!!! >=D

Ok. Agora a notícia rum. Um dos ícones pop do brega brasileiro acaba de nos deixar...Waldick Soriano morreu ontem e talz de uma doença aí. De qualquer forma, ele deve estar tomando uma e cantando brega em um lugar melhor!

quarta-feira, 30 de abril de 2008

Quer criar flash com o linux? Na hora!!!

Ué? O Flash CS3 não instala no seu linux e você quer fazer aquela animação para o seu site? Falta opções? Bem...se você não se importar de escrever um pouquinho de código, aqui vai a melhor opção que eu achei até agora, o Haxe !
O Haxe é uma linguagem de alto nível, orientada a objetos, que foca no desenvolvimento para Web. Isso inclui FLASH negada!!!

Sugiro que quem ficar interessado, dê uma passada no site do projeto que é bonito e intuitivo. Ah, e para quem está curioso, a linguagem haxe tem uma sintaxe que é uma mistura de c++/java e perl. Rsrrsrs, não é a coisa mais bonita desde a Giselle Butchen, mas dá pra sobreviver!