Después de haber instalado y configurado Django en el Post anterior Ver publicacion, vamos a comenzar a crear nuestro primer Proyecto Django.
Un proyecto Django es un paquete de archivos con lineas de código python que se generan automáticamente al ejecutar un comando python en el cmd. También podemos decir que es la organización de archivos en primera instancia de tu aplicación.
Lo que haremos es este Post es:
Lo que haremos es este Post es:
- Crear un proyecto Django
- Configurar la conexión de Django a MySQL en el archivo settings.py
- Iniciar o correr nuestro servidor
- Crear directorios Django
- Escribir nuestro modelo que es en esencia nuestra BD (models.py).
- Generar la Base de Datos a partir del modelo (models.py)
- Usar el administrador de Django para insertar, modificar o eliminar datos en nuestra BD generada.
- Crear un proyecto Django Abrimos el CMD y ubicamos la ruta donde deseamos crear nuestro proyecto con el comando cd ó cd..(En mi caso he creado una carpeta en el disco G:\ llamada proyecto) y ejecutamos el comando.
- Configurar la conexión de Django a MySQL en el archivo settings.py Abrimos el archivo settings.py y lo editamos:
- Iniciar o correr nuestro servidor Luego de configurar el archivo settings.py ponemos a correr nuestro servidor con el comando:
- Crear directorios Django
En este tutorial crearemos una APP llamada ventas dentro del directorio aplicación. Como consecuencia de esto, la APP estará acoplada con el proyecto, osea, python accederá a la APP ventas, "aplicacion.ventas".
Para crear la APP escribimos el comando:
python manage.py startapp venta - Escribir nuestro modelo que es en esencia nuestra BD (models.py).
Para escribir nuestro modelo, nos guiaremos del siguiente modelo E-R - Generar la Base de Datos a partir del modelo (models.py) Creamos manualmente nuestra BD mybase. Luego:
django-admin.py startproject aplicacion
Esto creará el directorio siguiente:
- aplicacion/
- __init__.py
- settings.py
- urls.py
- wsgi.py
- ADMINS = (
- ('Jhony Omar', 'jpariahuache@gmail.com'),
- )
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
- 'NAME': 'mybase', # Or path to database file if using sqlite3.
- 'USER': 'root', # Not used with sqlite3.
- 'PASSWORD': '', # Not used with sqlite3.
- 'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
- 'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
- }
- }
TIME_ZONE = 'America/Lima'
Podemos cambiar el idioma:
LANGUAGE_CODE = 'es-PE'
NOTA: Hay mas configuraciones, como habilitar las APPs instaladas, definir la ruta de la URL, etc, pero la veremos conforme lo vayamos requiriendo.
- python manage.py runserver
- http://localhost:8000/ y nos debe de salir esto
Por defecto el servidor se inicia con el puerto 8000, si deseamos iniciar en otro puerto hacemos:
- python manage.py runserver localhost:8002( por ejemplo)
Esto creará un directorio venta ubicado dentro del proyecto aplicacion con la estructura:
- venta/
- __init__.py
- models.py
- tests.py
- views.py
Esta estructura de directorios contendrá la aplicación de venta y es aquí donde comenzaremos a trabajar.
Bien,abrimos el archivo proyecto\aplicacion\venta\models.py y escribiremos:
Antes importamos los modelos y formularios de Django:
- # -*- coding: utf8 -*-
- from django.db import models
- from django.forms import ModelForm
- #PARA EL MODELO MARCA
- class Marca(models.Model):
- descripcion = models.CharField(max_length=30)
- def __unicode__(self):
- return '%s' %(self.descripcion)
- #PARA EL MODELO COMPROBANTE
- class Comprobante(models.Model):
- descripcion = models.CharField(max_length=30)
- correlativo = models.IntegerField()
- serie = models.CharField(max_length=3)
- def __unicode__(self):
- return '%s' %(self.descripcion)
- #PARA EL MODELO CLIENTE
- class Cliente(models.Model):
- nombres = models.CharField(max_length=30)
- apellidos = models.CharField(max_length=30)
- doc_indentidad = models.CharField(max_length=11)
- def __unicode__(self):
- return '%s' %(self.nombres+' '+self.apellidos)
- #PARA EL MODELO PRODUCTO
- class Producto(models.Model):
- marca = models.ForeignKey(Marca, on_delete=models.PROTECT)
- descripcion = models.CharField(max_length=50)
- modelo = models.CharField(max_length=30)
- precio = models.DecimalField(max_digits=18, decimal_places=2)
- def __unicode__(self):
- return '%s' %(self.descripcion+' '+self.modelo)
- #PARA EL MODELO VENTA
- class Venta(models.Model):
- cliente = models.ForeignKey(Cliente, on_delete=models.PROTECT)
- comprobante = models.ForeignKey(Comprobante, on_delete=models.PROTECT)
- nro_comprobante = models.IntegerField()
- fecha = models.DateField()
- total = models.DecimalField(max_digits=18, decimal_places=2)
- detalle_venta = models.ManyToManyField(
- Producto, through='Detalle_venta', null=True, blank=True)
- def __unicode__(self):
- return '%s' %(self.comprobante+' '+self.nro_comprobante+' '+self.cliente)
- #PARA EL MODELO DETALLE
- class Detalle_venta(models.Model):
- producto = models.ForeignKey(Producto, on_delete=models.PROTECT, related_name='fk_detalleventa_producto')
- venta = models.ForeignKey(Venta, on_delete=models.PROTECT, related_name='fk_detalleventa_venta')
- cantidad = models.IntegerField()
- precio = models.DecimalField(max_digits=18, decimal_places=2)
- def __unicode__(self):
- return '%s %s' %(self.producto, self.venta)
Abrimos el archivo settings.py y agregamos las APPS; de Django y nuestra APP venta:
- INSTALLED_APPS = (
- 'django.contrib.auth',
- #python social auth
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'django.contrib.admin',
- 'django.contrib.admindocs',
- 'debug_toolbar',
- 'django_extensions',
- 'sorl.thumbnail',
- 'registration',
- 'venta',
- # Uncomment the next line to enable the admin:
- # 'django.contrib.admin',
- # Uncomment the next line to enable admin documentation:
- # 'django.contrib.admindocs',
- )
Ahora abrimos el CMD y ubicamos la ruta donde se encuentra nuestro proyecto aplicacion y ejecutamos el comando para crear nuestra base de datos a partir del modelo anteriormente:
- python manage,py syncdb
- Podemos crear nuestro super usuario para la administración de django
Listo!!!. Esto habrá creado nuestra base de datos con sus tablas respectivas y otras tablas que Django necesita.
NOTA. Las tablas se crearán así: NOMBRE_DEL_APP.tabla, esto para referenciar a que APP pertenece.
- 7. Usar el administrador de Django para insertar, modificar o eliminar datos en nuestra BD generada.
El administrador de Django es un motor muy potente que trabaja con los meta-datos de los modelos para generar una interfaz de administración. Para poder habilitar esta opción se tenemos que configurar 2 cosas:
- Crear un archivo admin.py dentro de la APP venta y registrar todos los modelos:
#encoding:utf-8
from django.contrib import admin
from venta.models import *
admin.site.register(Marca)
admin.site.register(Comprobante)
admin.site.register(Cliente)
admin.site.register(Producto)
admin.site.register(Venta)
admin.site.register(Detalle_venta)
- Registrar las URLs admin en el archivo urls.py ubicado dentro de Aplicacion:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
)
-
Iniciamos nuestro servidor en el cmd:
- python manage.py runserver
Abrimos nuestro navegador y escribimos la dirección:
http://localhost:8000/admin/Para iniciar sesión usaremos los datos que registramos en la parte 6.
Esta es la interfaz de nos presenta Django para la administración de los modelos
Puedes realizar las operaciones que deseas con normalidad.En el siguiente Post mostraremos las parte de administración de Django tomando como referencia nuestro modelo creado.