Ir al contenido principal

Django I - Crear nuevo proyecto


Hacemos un resumen del tutorial oficial de Django recogiendo los principales pasos para comenzar con el framework. Para más detalle visitar la documentación oficial.

Asumimos que ya Django está instalado, si no, hay bastante documentación online de como hacerlo en los distintos sistemas operativos.

Versión:

Si el framework está instalado, podemos ver la versión con:
$ python -c "import django; print(django.get_version())"
de no estar instalado veremos un error "No module named django".


Comenzar un nuevo proyecto:

Desde la consola situarse en el directorio donde queremos almacenar el código de nuestro proyecto y ejecutar:
django-admin.py startproject mysite
El nuevo proyecto creado tendrá una estructura:
mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
dónde:
mysite/
La carpeta raíz del proyecto tendrá el mismo nombre que utilizamos a la hora de crearlo pero se puede cambiar, no afecta en nada el funcionamiento, es sólo el contenedor para alojar todo el código de nuestro trabajo.

mysite/manage.py
Una utilidad de línea de comandos para interactuar directamente con Django. Recomendado su estudio y más detalles.

mysite/mysite/
Es realmente el paquete para el proyecto. Con este nombre de paquete es que podremos importar cualquier cosa a nuestro proyecto (ejemplo: mysite.urls).

mysite/__init__.py
Fichero vacío que le avisa a Python que este directorio debe considerarse como un paquete.

mysite/settings.py
Aquí estará toda la configuración del proyecto. Durante el transcurso del tutorial se volverá sobre este fichero en varias ocasiones pero para un mejor estudio, se recomienda la lectura de Django settings.

mysite/urls.py
Lo describen como una 'tabla de contenidos', basicamente la declaración de las URL que contendrá nuestro proyecto. Más información sobre el trabajo con URLs

mysite/wsgi.py
Un punto de entrada para servidores web WSGI. Más detalles sobre como desplegar utilizando WSGI.

Servidor de pruebas:

Django incluye un servidor web bastante básico con el objetivo de agilizar el desarrollo pero no debe considerarse como una solución para un entorno de producción. Con el comando
$ python manage.py runserver
tenemos corriendo en http://127.0.0.1:8000 nuestro servidor de pruebas y ya podemos acceder a nuestro proyecto desde un navegador web. Si queremos correr el servidor en otro puerto o cambiar el IP desde el cual lanzamos el servidor, tan simple como
$ python manage.py runserver 0.0.0.0:8000
No es necesario reiniciar el servidor cada vez que se haga algún cambio en el proyecto, pues a cada petición que se haga, este se actualizará con los nuevos cambios que hayamos realizado.

Configuración de Base de Datos

Django por defecto viene configurado para utilizar SQLite, es la opción más simple y si no se domina el tema de bases de datos o no se hará un uso excesivo de ella, se puede dejar la configuración tal y como está. Por otra parte, Django posee una capa de abstracción que nos permite utilizar una amplia variedad de gestores de bases de datos. Si no vamos a utilizar SQLite tendremos que editar el fichero 'settings.py' y configurar la base de datos que vayamos a utilizar en nuestro proyecto.

  • ENGINE: agregamos el motor de base de datos que vayamos a utilizar, por ejemplo 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql'... y otros más que también son posibles.
  • NAME: El nombre de la base de datos que utilizaremos. Debe ser creada antes de utilizarla.
Si no utilizamos SQLite, deberemos configurar además:
  • USER
  • PASSWORD
  • HOST
y como siempre, un enlace con más detalles y un ejemplo de como podría quedar la configuración:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}
En el mismo fichero de configuración aparecen las aplicaciones que trae por defecto Django:
Ahora, con algo tan simple como:
$ python manage.py syncdb
se generarán toda la estructura necesaria en la base de datos configurada en dependencia de las aplicaciones que estén habilitadas en nuestro proyecto.


Siguiendo el mismo orden de la documentación oficial, en la próxima entrada veremos como crear 'modelos' de datos con Django.





Publicar un comentario

Entradas populares de este blog

Ubercart, atributos o CCK ?

Ubercart (UC) es una gran solución para e-shops. Trabajando sobre el poderoso Drupal lo convierte en una herramienta muy adaptable a muchas situaciones. Recuerdo que cuando empecé a usarlo una de las primeras dudas que me asaltó la cabeza fue decidir que era mejor con UC: campos (fields) de CCK o los atributos (attributes) del propio UC. El uso de atributos y clases para categorizar los productos de la tienda puede resolver en muchas situaciones y está muy bien pensado. Pero como no todo es perfecto acabo de chocar con una de esas situaciones que parece ser la excepción de la regla y donde he tenido que sacrificar los atributos de Ubercart por los conocidos y siempre bienvenidos campos de CCK. La idea inicial era facilitar al vendedor que subiera un solo producto, con su modelo y precio básico, y que luego los clientes pudieran seleccionar los atributos requeridos. La cuestión se complicó porque los cinco (5) atributos asociados a la clase de producto X están muy poblados. Cuando inte…

Raspberry Pi, ¿por dónde empezar?

Dicen que debo darle el mérito a Ježišek, que seguro los que no hayan pasado por Chequia, no entenderán, así que digamos que sería a Papá Noel o Santa Claus que seguro es más familiar. Pero la verdad, gracias a la mejor esposa del mundo es que me ha llegado mi primera Raspberry Pi. Aunque ya había leído un montón (no fue difícil para ella pensar en que regalarme :) ), tener la pequeña en mis manos me hizo revisar de nuevo toda la información y cada detalle para poder explotar el juguete lo mejor posible. Si no tienes una RPi, puedes utilizar esta imagen para emularla con VirtualBox. Ojo! este link no descarga la imagen, sino el torrent con el cual se podrá descargar finalmente la imagen. Ahora mismo estoy descargando la imagen para explorarla en estos días, aunque por los comentarios del foro parece muy buena opción. Una vez se tiene la tarjeta en la mano, aparece la primera pregunta: y ahora, que? Por las recomendaciones de casi todos los blogs y foros, tenía claro que iba a comenza…

Drupal Commerce - producto con varios precios

Montando un marketplace con Drupal Commerce, apareció un caso de uso donde el cliente quería agregar a cada producto un precio de envío diferente. Por tanto no valía una Flate Rate u alguna solución clásica de 'shipping', así que pensé que Rules y encontré esta simple solución de Josh Miller:
La idea es agregar un campo 'envío' tipo 'price' al tipo de producto en cuestión, y luego con rules, sumar al precio del producto, el precio del envío.
Crear una nueva regla de cálculo de precio. Ir a admin/commerce/config/product-pricing/rules/add y darle un nombreAgregamos una primera condición "Entity has field" a la entidad "commerce-line-item" y seleccione el campo "commerce_product". Con este paso se carga el producto para la siguiente inspección.Segunda condición, cargamos el campo con el precio: "Entity has field" a la entidad "commerce-line-item:commerce-product" y seleccionamos el campo creado previamente en el ti…