Django – Entiendo como trabaja – MTV y Django



Django – Entiendo como trabaja – MTV y Django

0 0


presentacion-django

Introduccion a la programacion en Django

On Github carloshs92 / presentacion-django

Django

Entiendo como trabaja

Creado por Carlos Huamaní / @carlosHS92

MTV y Django

  • El modelo en Django sigue siendo modelo
  • La vista en Django se llama Plantilla (Template)
  • El controlador en Django se llama Vista

Nombre de los archivos

Estos son los principales nombres convencionales para trabajar con django:

  • models.py.
  • views.py
  • admin.py
  • urls.py
  • settings.py

Cosas que debemos saber

  • PIP

    Herramienta para instalar paquetes de python

    sudo yum install python-pip 
  • VirtualEnv

    Entorno virtual de python

    sudo yum install python-virtualenv

Creando el ambiente virtual del proyecto

mkdir miproyecto

cd miproyecto

virtualenv venv --distribute

> Installing Setuptools...........................................done. > Installing Pip.............................................done.

source venv/bin/activate

pip install django

pip freeze > requirements.txt

Nuestra primera pagina en Django

django-admin.py startproject misitio .

python manage.py syncdb

python manage.py startapp libreria

python manage.py runserver

Agregando los modelos

#libreria/models.py

from django.db import models

class Autor(models.Model):
   nombre = models.CharField(max_length=50)
   descripcion = models.TextField(blank=True, null=True)

     def __unicode__(self):
        return self.nombre

class Categoria(models.Model):
   nombre = models.CharField(max_length=50)

   def __unicode__(self):
        return self.nombre

class Libros(models.Model):
   nombre = models.CharField(max_length=100)
   paginas = models.IntegerField()
   fec_publicacion = models.DateTimeField()
   archivo = models.FileField(upload_to="libros/")
   imagen = models.ImageField(upload_to="portadas/")
   autor = models.ForeignKey(Autor)
   categoria = models.ForeignKey(Categoria)

   def __unicode__(self):
        return self.nombre

Mas tipos de campos...

Aqui puedes encontrar mas referencias de los campos

Aprendiendo el ORM

python manage.py syncdb
python manage.py shell
from libreria.models import Autor, Categoria, Libros
Autor.objects.all()
autor = Autor.objects.create(nombre='Monty Python', descripcion='Autor de libros de humor')
categoria = Categoria.objects.create(nombre='Humor')
from datetime import datetime
libro = Libros.objects.create(nombre='La broma', paginas=300, fec_publicacion=datetime.today(), autor=autor, categoria=categoria)
mislibros = Libros.objects.all()

for libro in mislibros:
   print libro.nombre
   print libro.paginas

for cat in ['Accion', 'Horror', 'Suspenso']:
   Categoria.objects.create(nombre=cat)

Aqui puedes encontrar mas querysets

Filtros

#Excluir registros que comienzan con "H"
Categoria.objects.exclude(nombre__startswith="H")

#Registros que contienen la palabra "or"
Categoria.objects.filter(nombre__contains="or")

#¿Existe registros que contienen la palabra "ora"?
Categoria.objects.filter(nombre__contains="ora").exists()

#Cantidad de registros que contienen la palabra "or"
Categoria.objects.filter(nombre__contains="or").count()

#Orden de registros
Categoria.objects.all().order_by('nombre')
Categoria.objects.all().order_by('nombre').reverse()
Categoria.objects.all().order_by('-nombre')

#Seleccionar/Actualizar/Eliminar
Categoria.objects.get(pk=3)
Categoria.objects.filter(pk=3).update(nombre="Terror")
Categoria.objects.filter(pk=5).delete()

El admin de Django

#misitio/urls.py

admin.site.register(Autor)
admin.site.register(Libros)
admin.site.register(Categoria)