Se você já leu o Tutorial Postgresql - parte 1 e PostgreSql e Python3 - parte 2 , este post é uma continuação. Aqui nós veremos como usar PostgreSQL no Django.
Para quem já leu Two Scoops of Django sabe que o PyDanny recomenda fortemente o uso do mesmo SGBD tanto em produção como em testes. Então esqueça sqlite para testes, use MySql ou Oracle ou PostgreSQL tanto em produção como em testes, e é sobre este último que vamos falar agora.
Então vejamos aqui como configurar o Postgresql para ser usado no Django.
Precisamos criar o banco manualmente
Começando...
$ sudo su - postgres
Veja o prompt:
postgres@myuser:~$
Criando o banco
$ createdb mydb
Se existir o banco faça
$ dropdb mydb
e crie novamente. Para sair digite
$ exit
Django
Vamos criar um virtualenv e instalar o psycopg2, além do django.
virtualenv -p /usr/bin/python3 teste
cd teste
source bin/activate
pip install psycopg2 django
pip freeze
pip freeze > requirements.txt
Dica: Para diminuir o caminho do prompt digite
$ PS1="(`basename \"$VIRTUAL_ENV\"`):/\W$ "
Dica:
vim ~/.bashrc +
alias manage='python $VIRTUAL_ENV/manage.py'
Com isto nós podemos usar apenas manage ao invés de python manage.py.
Criando o projeto
django-admin.py startproject myproject .
cd myproject
python ../manage.py startapp core
Edite o settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
# 'NAME': os.path.join(BASE_DIR, 'mydb'),
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '', # 8000 is default
}
}
Rode a aplicação
python manage.py migrate
python manage.py runserver
http://127.0.0.1:8000/ ou http://localhost:8000/
Edite o models.py
from django.db import models
from django.utils.translation import ugettext_lazy as _
class Person(models.Model):
name = models.CharField(_('Nome'), max_length=50)
email = models.EmailField(_('e-mail'), max_length=30, unique=True)
age = models.IntegerField(_('Idade'))
active = models.BooleanField(_('Ativo'), default=True)
created_at = models.DateTimeField(
_('Criado em'), auto_now_add=True, auto_now=False)
class Meta:
ordering = ['name']
verbose_name = "pessoa"
verbose_name_plural = "pessoas"
def __str__(self):
return self.name
Leia mais em
Como criar um site com formulário e lista em 30 minutos?
Edite o settings.py novamente
Em INSTALLED_APPS insira a app core.
INSTALLED_APPS = (
...
'myproject.core',
)
Faça um migrate
python manage.py makemigrations core
python manage.py migrate
python manage.py createsuperuser
Um pouco de shell
$ python manage.py shell
Python 3.4.0 (default, Apr 11 2014, 13:05:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
Serve para manipular a app pelo terminal.
>>> from myproject.core.models import Person
>>> p = Person.objects.create(name='Regis',email='regis@example.com',age=35)
>>> p.id
>>> p.name
>>> p.email
>>> p.age
>>> p.active
>>> p.created_at
>>> p = Person.objects.create(name='Xavier',email='xavier@example.com',age=66,active=False)
>>> persons = Person.objects.all().values()
>>> for person in persons: print(person)
>>> exit()
Leia mais em
PostgreSql e Python3 - parte 2
Como criar um site com formulário e lista em 30 minutos?
How To Install and Configure Django with Postgres, Nginx, and Gunicorn
http://www.postgresql.org/docs/9.4/static/tutorial-createdb.html
"PostgreSql e Django - parte 3" de "Regis da Silva" está licenciado com uma Licença Creative Commons - Atribuição-NãoComercial-SemDerivações 4.0 Internacional.