Python Django 1.6 apuntes

Instalar herramientas


Instalar PIP

Paso: 1.- Para instalar PIP primero se tiene que instalar Python Setup Tools y luego PIP:
$ sudo apt-get install python-setuptools
$ sudo easy_install pip
 
Paso: 2.-Instalar Virtual Enviroment:
$ pip install virtualenv

Con esto deberia funcionar, pero no me funciono por lo que usé siguiente comando:
$ sudo apt-get install python-virtualenv

Después puede sejecutar

$ pip install virtualenv

para crear tu proyecto
 
 
Paso: 3.- Crear y activar un entorno virtual, ejemplo co el nombre DjangoAvanzado
# Como comprobar si esta activado el entorno virtual? por que veras algo asi entreparentesis, (DjangoAvanzado)wilzon@ubuntu:~/ejemplo$
virtualenv DjangoAvanzado
source DjangoAvanzado/bin/activate
 
# Paso: 4. Instalar Django dentro de nuestro entorno virtual :) . Nota asegurnado que el entorno este activado ejecutar el sigueinte comando.
pip install django
 
# Con esto Django te crea una carpeta con 4 archivos
django-admin.py startproject SistemasDiscuciones
 
# -------------------
# Buenas practicas; PEP 8 Es una convension que debemos seguir al momento de programar
 
# ---
# Algunos tips importantes de PEP 8 (Reglas de buenas practias)
# Usar 4 espacios a nivel de identacion
# Separar la definicion de funciones o clases con 2 lineas en blanco
# La definicion de metodos de una clase deben estar separadas por una linea en blanco
# Limite de linea de codigo es de 79 carastres (osea en una fila no debe ser mayor a 79). Sin embargo PEP 8 hace una excepcion si estas trabajando con proyectos privados te permite utilizar un limite de 99 caracteres
 
# Importaciones (import)
# Primero se debe importar los imports de core de Django
# Segundo los imports de las aplicaciones de terceros
# Por ultimo los imports de las aplicaiones locales
 
# Existen 3 tipos de importaciones que se puede hacer
# 1.- Importacion absoluta. Se usa para importar un modulo desde fuera de la aplicacion actual
# 2.- Importacion Explicita. Se usa cuando importamos un modulo de la misma aplicacion
# 3.- Importacion relativa. Se usa para lo mismo que importacion explicita pero no es recomendado
# Ejemplo del tipo de importaciones
from app1.views import suma   # Importacion absoluta
from .models import persona   # Importacion Explicita
from models import persona    # Importacion relativa
 
# Nunca debemos utilizar el: import * Para no importar mas cosas de los que necesitamos
# -------------------
 
# En la ruta del proyecto configuramos nuestro entorno, por ejemplo donde se encontraban los 4 arvhiso __init__.py, urls.py, wsgi.py, settings.py aqui creamos la carpeta settings y dentro de ella creamos los 5 entonrnos de desarrollo: base.py, local.py, staging.py, production.py, test.py, __init__.py
# en esos entornos estan  las configuraciones para local, prueba, produccion ,etc. y como estamos programando en local ejecutamos la configuracion local
python manage.py runserver --settings=SistemasDiscuciones.settings.local
 
# -------------------
# unipath. Es un paquete de Python que nos ayuda en el manejo de rutas a directorios y archivos
# instalacion de unipath, con esto se va a instalar dentro del entorno virtual en la que estamos
pip install unipath
 
# Importacion de Path
#   from unipath import Path
    # Con ancestor(3) subimos 3 niveles en la carpeta :)
    # BASE_DIR = Path(__file__).ancestor(3)
 
# -------------------
# Requeriments: son archivos de texto, donde estaran todas las dependencias del proyecto, se refiere a todas las aplicaiones extra que se instalo para que funcione el proyecto
# Asi como tenemos multiples archivos setting (base.py, local.py, staging.py, production.py)
# De la misma manera deberiamos tener multiples archivos requeriments (base.txt, local.txt, staging.txt, production.txt) cada uno para un hambiente de trabajo diferente
# Como tenemos 4 archivos de configuracion, vamos a tener 4 archivos de requeriments
# En la carpeta del proyecto, crear una carpeta con el nombre de  'requeriments' y ahi los 4 archivos
 
# ¿Como saber que dependencias estan instaladas en mi entorno viretual?
# Con esto nos devuelve todas las dependencias que tenemos instaladas :)
pip freeze --local
 
# Como las dependencias son iguales lo copiamos al archivo base.txt
Django==1.7.1
Unipath==1.0
 
# Luego en local.txt incluir todas las configuraciones de base.txt
-r base.txt
 
# ¿Por que hacemos esto?
# Los archivos requeriments nos facilitan al momento de llevar nuestro proyecto a otro hambiente de trabajo
# ya que solo tenemos que crear un entorno virtual y ejecutar el archivo requeriments.txt que corresponda al hambiente de trabajo donde estes y todas las dependencias que estan en ese archivo se instalaran en tu entorno virtual
# Y con esto tenemos listo para que todo funcione :)
pip install -r requeriments/local.txt
 
# -------------------------------------------------------------------
# Instalar PostgreSQL
 
# Para conectar PostgreSQL con Django, necesitamos instalar dos paquetes que son obligatorios
sudo apt-get install libpq-dev python-dev
 
# Instalar PostgreSQL
sudo apt-get install postgresql
 
# Si el ervicio no esta iniciado, ejecutar el siguiente comando
sudo service postgresql start
 
# PostgreSQl nos crea un usuario, para cambiar la clave, te pide que ingreses
sudo passwd postgres
 
# Iniciar session
su postgres
 
# Cerrar session
Ctrl+D
 
# Crear nuevo usuario
createuser cursodjango
 
# Crear una DB
createdb Discusiones
 
# Ingresar a la DB
psql Discusiones
 
# Ahora le voy dar la clave al usuario que se creo
ALTER USER cursodjango WITH PASSWORD 'pass';
 
# Listar tablas
\d
 
# Salir de lista de tablas
\q
 
# Ahora poner esos datos en archivos de configuracion 'local.py'
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'nombre_base_de_datos',
        'USER': 'nombre_usuario',
        'PASSWORD': 'clave_usuario',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}
 
# -------------------------------------------------------------------
# Instalar conector de Python con PostgreSQL
# Para eso hay que verificar que tenemos activo nuestro entorno virtual :)
# Y co esto se va instalar el conector dentro del entorno virtual
pip install psycopg2
 
# Sincronizar la DB para que todas las tablas que genera el administrador, se guarden en la DB que creamos en PostgreSQL
python manage.py syncdb --settings=SistemasDiscuciones.settings.local
 
# -------------------------------------------------------------------
# Correr servidor de pruebas
# Para testear se puede crear multiples entornos de prueba, segun version de Django, etc. claro para eso crea primero tu entorno virtual ejemplo: virtualenv DjangoAvanzado2
python manage.py runserver --settings=SistemasDiscuciones.settings.local
 
# -------------------------------------------------------------------
# Instalar South
# South es una aplaicaion de terceros que traer migraciones para nestras aplicaiones hechas en Django, y su principal objetivo es proporcional una capa simple y estable , para evitar complicaiones de perdida de informacion al momento de hacer modificaiones a la DB. Siempre es recomendable iniciar un proyecto teniendo South para no tener problemas mas adelante
# Hay que recordar tener activada nuevo entorno virtual, en el que se instalara la aplciacion
pip install south
 
# Sincronizar la DB para que geneneran las tablas que traen esta aplicaion
python manage.py syncdb --settings=SistemasDiscuciones.settings.local
 
 
# -------------------------------------------------------------------
# - Creaciòn de Apps
# -------------------------------------------------------------------
 
# ubicarse en carpeta apps y crear archivvo '__init__.py' ejecutar comando para crear apps
# Este comando nos crea una carpeta con el nombre que le damos y crear los 5 archivos
# Aca se crea el model.py, views.py, admin.py, etc.
django-admin.py startapp home
 
# Vistas
#
 
 
 
# -------------------------------------------------------------------
# - Social Login
# -------------------------------------------------------------------
 
# Instalar Python Social Auth
pip install python-social-auth
 
# Cada eves que instalamos algo deberiamos ejecutar comando para evr las dependencias
pip freeze --local