Tag: Django
JSONResponse – Trabalhando com JSON em Django, o jeito fácil.
by Felipe 'chronos' Prenholato on 00:40, under Apps e extensões, Django, python
Existem por ai dezenas de artigos e snippets sobre como trabalhar com JSON
em Django, entretanto vi que a maioria é um pouco vaga e a solução envolve serializar com simplejson e mandar para o HttpResponse. Existem alguns detalhes que normalmente não se cobrem e eu apresento a maneira fácil de trabalhar e um exemplo funcional de JSON em um formulário.
(continue reading…)
Vim confs prontas para trabalhar com Python e Django
by Felipe 'chronos' Prenholato on 06:59, under Dicas, Django, Linux, VIM - Vi IMproveded, python
Este fim de semana eu reescrevi meu .vimrc e gastei um tempo extra para fazer
as coisas funcionarem melhores para mim com python e django
. Eu acabei
fazendo um belo trabalho e agora estou codando com muito mais eficiência.
Os resultados são:
- Um .vimrc muito bem comentado e com muitas customizações.
- Suporte para python omnicomplete.
- Adição dos paths python e django automáticos ao ambiente do vim.
- Adição da DJANGO_SETTINGS_MODULE automaticamente ao ambiente do vim, para completar seu próprio código.
- Suporte do SnipMate para código django e django templates.
- Django templates com suporte para highlighting das tags e uso do ‘%’ com o plugin matchit.
- Python folding e suporte a python jumping.
- O tema acinzentado wombat com algumas customizações minhas.
- Um gerenciador de sessões para o Vim para facilitar sua vida em manter o ambiente de trabalho.
Aqui estão os arquivos para download:
- vim-confs-latest.tbz2: O arquivo tar compactado com todos os arquivos, descompacte na sua home.
- vim-confs-latest.tbz2.md5: O md5sum do tar.
Se você preferir, este é o endereço no github: http://github.com/chronossc/my-vim-confs
O pacote não poderia ter sido criado sem alguns plugins e artigos, segue a referência:
- UsingVimWithDjango do Django Wiki
- SnipMate vim plugin por Michael Sanders
- SnipMate snippets for django por Rob Hudson (Demo)
- Matchit vim plugin por Benji Fisher
- Updated Syntax highlighting for Django templates por Dave Hodder
- py_jump vim plugin por Sergiy Matusevych
- python fold vim plugin por Jorrit Wiersma
- Session Manager for vim por Yuri Klubakov
Adicionalmente (thx Handrus), eu sugiro para quem escreve muito HTML, dar uma olhada no SparkUp vim and textmate plugin
. Eu não testei, mas pareceu muito bom.
Muito obrigado a quem ler, a todos que escreveram os plugins, ao pessoal do canal #vim na freenode e a ótima documentação do vim!
Agora bora codar com o vim
** Atualizado
2010-03-07: Eu criei novamente o tar porque eu removi algumas mensagens de debug, então faça o download novamente se você já fez
.
2010-03-09: Eu criei novamente o tar, fiz alguns fixes e adicionei no github.
Configurando múltiplos ambientes Python
by Felipe 'chronos' Prenholato on 00:20, under Dicas, Django, Gentoo, python
Múltiplos ambientes python
Trabalhar com várias versões de ambientes python tem se tornado algo comum em minha vida, e acredito que um meio fácil de ’setar’ estes ambientes seja algo útil e não tão simples para a maioria das pessoas.
Eu criei um simples bash script que seta este ‘ambiente’, trata-se de uma função que você cria no seu .bash_profile. Executa-se ela com a versão do python em seguida e pronto, seu ambiente esta configurado. Vamos ver no código como eu fiz, o script está com comentários em inglês:
export ORIGINALPATH=$PATH loadpyenv(){ # $PV is our control variable, get from $1, first argument on shell # anything that you need to put here and depend for python version ${PV} is your var ;) export PV=$1 echo -e "\n:: Setting environ to use python $PV" # Put here various aliases that you can use # put a python alias alias python="python${PV}" # m and runserver a kick alias for Django common actions alias m="python${PV} manage.py" alias runserver="python${PV} manage.py runserver :8000" # easy and fast install of python packages, in right path with localpyinstall alias localpyinstall="python${PV} setup.py install --prefix=~/.py/${PV}/" echo -e "\n:: New aliases" # print aliases :) alias python m runserver localpyinstall echo -e "\n:: New PATH" # setup aplications path, be careful about not use $ORIGINALPATH. # # I use a path structure like that: # ~/.py/ # |-- 2.4 # |-- 2.5 # `-- 2.6 export PATH="${HOME}/.py/${PV}/bin/:${ORIGINALPATH}" echo $PATH echo -e "\n:: New PYTHON PATH" # setup new python path, don't need to add system wide path, just our custom paths export PYTHONPATH="${HOME}/.py/${PV}/lib/python${PV}/site-packages/" # print more some info python$PV -c "import sys;print sys.path" echo -e "\n:: Django version & file" python$PV -c "import django;print 'version %s ... file %s' % (django.get_version(),django.__file__);" }
Agora crie uma estrutura de diretórios com o comando:
$ mkdir -pv ~/.py/{2.4,2.5,2.6}
E cada vez que for usar uma versão diferente do python, carregue com:
$ loadpyenv VERSÃO
Onde VERSÃO é a versão escolhida do python.
Várias versões do Python no Gentoo
O Gentoo Linux, minha distro do dia a dia, me dá um bom bonus quanto a múltiplas versões do python, configure no /etc/make.conf a seguinte linha:
USE_PYTHON="2.4 2.5 2.6"
Instale os pythons nas versões escolhidas e execute o seguinte comando para re-compilar seus pacotes:
emerge $(eix -I dev-python/* | grep "\[I\]" | cut -d' ' -f2)
O eix é uma aplicação de indexação do portage, muito comum nas máquinas Gentoo.
Cada pacote python é recompilado para as 3 versões (no caso), mas tive problemas em compilar alguns pacotes para a 2.4, fiquem avisados
Bom, é isso, até mais!
Manipulando erros Http 403 (permissão negada) no Django
by Felipe 'chronos' Prenholato on 17:35, under Apps e extensões, Django
Olá pessoal
. Recentemente, precisei usar o módulo Auth do Django e suas permissões. É bastante interessante como você pode definir permissões por módulo e usar nas views, templates, etc.
Nosso código de hoje vem da necessidade de trabalhar facilmente com permissões negadas, onde o Django fornece apenas um HttpResponseForbidden, o que não é exatamente interessante de manipular, pois o ideal seria algo como a manipulação de erros 404.
Com essa necessidade desenvolvi um Middleware que intercepta exceções Http403 (vem junto com o pacote), e retorna uma das seguintes opções, na ordem de prioridade:
- Uma view customizada, configurada usando handler403 no seu urls.py
- Renderiza o template 403.html
- Renderiza um template Hardcoded
Para usar o Middleware, siga os procedimentos:
- Baixe o projeto no fim deste post, vamos usa-lo de exemplo, ele se chama http403project.
- Descompacte e copie o arquivo http.py para algum lugar do seu projeto, no http403project ele fica na raiz.
- Adicione o middleware ao settings.py:
MIDDLEWARE_CLASSES = ( # ... 'http403project.http.Http403Middleware', )
- De raise na view, ex:
from http import Http403 def Http403View(request): raise Http403(u"This is custom message for permission denied.")
- Configure sua view customizada ou template se desejar. Seu template deve ter o nome de 403.html, sua view recebe os argumentos request e exception, o argumento exception contem a mensagem enviada pelo usuário
. No projeto exemplo ele está renderizando o template 403.html, mas existe uma view de exemplo bastante simples no arquivo urls.py
Projeto: http403project.tgz
Ok, é isto, super simples, por hoje é só
, divirtam-se!
Fast quote on #django
by Felipe 'chronos' Prenholato on 00:57, under Quotes
Fast quote on #django
<the-teacher> the-man: welcome to Python
<the-man> the-teacher: welcome to what?
<the-man> the-teacher: what is a python?
<some-people> lol
<the-teacher> the-man: the language Django is written in, you twit
<chronos> husahduas… I’m reading it..
<the-man> the-teacher: language?
<some-people-2> the-man, …
<the-man> the-teacher: like, english?
<chronos> need a quote…
<some-people> ”
<the-man> oh come on, don’t bullshit me with “welcome to Python”
<the-man> @ the-teacher
…
Django apps (coleção) – parte 1
by Felipe 'chronos' Prenholato on 03:14, under Apps e extensões, Django
Eu estou trabalhando atualmente com Python e Django, a linguagem e o framework
são excelentes e como pretendo desenvolver um projeto bastante interessante
com ele estou listando aqui alguns dos apps que achei bastante interessante
em uma rápida pesquisa no Django Plugables e outros lugares.
Estou dividindo o artigo em duas partes e postarei uma por semana, coloquem
suas sugestões nos comentaŕios
.