Django
Django: Convertendo campo para Maiusculo e Minusculo (Uppercase e Lowercase)
Para converter strings para maiusculo ou minusculo eu faço de duas maneira uma é usando o css para o design e outra e convertendo novamente antes de inserir no banco para isso basta sobreescrever a função save do model, veja abaixo:
no css:
1 2 3 4 5 | /* css para colocar input estado em maiusculas e minusculo */ #id_estado { text-transform:uppercase; text-transform:lowercase; } |
model do objeto no django: models.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # para mostrar o campo em maiusculo class Pessoa(models.Model): nome = models.CharField(max_length=60) fantasia = models.CharField(max_length=60, blank=True, null=True) email = models.EmailField("Endereço de E-Mail", unique=True) class Meta: abstract = True def clean_name(self): return self.cleaned_data["nome"].upper() # para salvar o campo em maiusculo no banco de dados class Pessoa(models.Model): nome = models.CharField(max_length=60) fantasia = models.CharField(max_length=60, blank=True, null=True) email = models.EmailField("Endereço de E-Mail", unique=True) class Meta: abstract = True def save(self, force_insert=False, force_update=False): self.estado = self.estado.upper() super(Pessoa, self).save(force_insert, force_update) |
Para fazer a conversão em minusculo apenas substitue upper() por lower()
Baixe o snippets > http://djangosnippets.org/snippets/2416/
Django Profile – Como usar
Procurei um pouco esses dias sobre como utilizar o Profile no django, mas a documentação dele deixou muito a desejar, não temos ali exemplos de como incluir os dados do profile no banco, bem ao menos como recuperá-los. O único problema que vejo sobre os Profiles em django é que quando o usuário é criado o mesmo também não pode ser criado junto, os modelos não fazem parte um do outro. O que leva a nós desenvolvedores a criar manualmente esses profiles e se por algum motivo você esquecer podemos recuperar um erro no meio do programa.
Error: (10013, ‘Permission denied’) – Django no Vista
Pra quem tentar rodar o Django no Vista segue-se uma dica.
Se você estiver usando o servidor web do próprio django você pode receber a seguinte mensagem de error ao executar o comanto: python manage.py runserver
Error: (10013, ‘Permission denied’)
Isso porque por padrão o servidor seta navegação pela porta 8000 e por algum motivo que ainda não descobrir qual é o vista dá acesso negado (ainda não testei liberação do firewall nessa porta) para resolver a questão é só direcionar o servidor web do django para a porta 8080, veja o comando abaixo para fazer isso:
python manage.py runserver 8080
Startando Projedo Django no Windows
Precisei de usar o windows para programar em Django acontece que sempre recebia o error:
‘django-admin.py’ não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.
Isso mesmo colocando o caminho do Phython no path do sistema.
A solução que encontrei foi chamar o django-admin diretamente da pagina de instalação do Django, veja como fiz:
python C:\diretorio-de-instalacao-do-seu-python\Lib\site-packages\django\bin\django-admin.py startproject meuprojeto
Modificando RadioSelect na renderização
Esses dias precisei de modificar a exibição de um radio select na template do Projeto Galileu, bem por causa do css do template, por default o framework django monta assim as suas RadioSelect:
Django: Autenticação no site – Definir areas privadas e públicas
Esses dias precisei de definir as areas que serão públicas e privadas no Projeto Galileu, pra mim como tudo o que tinha feito no django isso já estaria no “pacote” de instalação, mas para minha supresa esse processo deve ser feito na unha, postei na lista do django como fazer o processo e me indicaram um link que tinha um codigo de como fazer esses bloqueios, então para os que estão vindo agora não passarem pelo que passei segue-se um tuto passo-a-passo sobre como fazer isso, bem então vamos ao trabalho.
Django: Colocando um default no ChoiceField
Esses dias custei para achar na net um exemplo de como colocar um valor default em um ChoiceField no meu forms.py, bem então aí segue-se:
Django erro: invalid syntax (urls.py, line 9)
Esses dias enfrentei um problema muito bobinho no django eu tentava colocar um “name” em minhas urls.py e ele me retornava a seguinte mensagem de erro:
Corrigindo erro: bash: django-admin.py: command not found
Bem vou começar a catalogar aqui no blog minhas experiências com django, coisa que deveria ter feito quando comecei a estudar sobre .Net, muitas vezes achava soluções para os meus problemas atuais e por não catalogalas eu acabava num futuro não sabendo como resolvi determinada situação, procurando evitar o mesmo erro vou fazer alguns lançamentos aqui no blog sobre algumas soluções que tenho encontrado, se não servir para ninguém pelo menos para mim será util.
Bom chega de conversa e vamos direto ao assunto. Estive por um tempo estudando django no Django Book e depois de concluir o livro eu resolvi começar um projeto para colocar em pratica o que tinha aprendido, então deparei-me com o meu primeiro obstacúlo eu não conseguia nem criar o projeto do django recebia a seguinte mensagem de erro:
1 | bash: django-admin.py: command not found |
Isso ocorre porque o django-admin não foi encontrado, ou seja o sistema não conseguiu encontrar onde está a pasta de instalação do django.
Há duas maneiras de solucionar isso:
1 – Se você usar o Debian quando for criar um projeto faça assim:
1 | django-admin startproject meuprojeto |
Obs. A diferença aqui que em debian ou ubuntu você não precisa colocar o “.py”
2 – Você pode fazer um link em “/usr/bin” para o arquivo django-admin.py, então rode a seguinte linha de comando: (como root)
1 | # ln -s pasta_do_django/django-admin.py /usr/bin |
“pasta_do_django” no debian fica em “/usr/lib/python-django/bin” no entando as vezes se você não instalou ele pelo aptitude ela pode estar em “/usr/lib/pythonX/site-packages/django” onde o “X” depois de python é a
versão que você utiliza.
feito isso é só roda o comando novamente que o projeto será criado sem problemas.