Tutorial Django App
Tutorial Django App
Contenido
Índice ................................................................................................................................................... 2
Tutorial de Django en Visual Studio Code Introducción ..................................................................... 3
Prerrequisitos ...................................................................................................................................... 3
Crear un entorno de proyecto para el tutorial de Django .................................................................. 5
Crea y ejecuta una aplicación Django ............................................................................................... 13
Crea el proyecto Django ................................................................................................................ 13
Crear una aplicación Django.............................................................................................................. 16
Crear un perfil de inicio del depurador ............................................................................................. 17
Usar una plantilla para representar una página ............................................................................... 20
Creación de Django CRUD app (Create, Retrieve, Update, Delete) .................................................. 23
Instalar driver MysqlClient ............................................................................................................ 23
Crear modelo de datos a manejar................................................................................................. 25
Crear vistas para el modelo requerido .......................................................................................... 28
Definir URLS para las páginas creadas .......................................................................................... 31
Templates ...................................................................................................................................... 31
Lista ........................................................................................................................................... 31
Create y Update ........................................................................................................................ 35
Delete ........................................................................................................................................ 37
Detail ......................................................................................................................................... 38
Todo listo! ..................................................................................................................................... 39
Tutorial de Django en Visual Studio Code Introducción
Django es un framework de Python de alto nivel diseñado para un desarrollo web rápido, seguro y
escalable. Django incluye un amplio soporte para enrutamiento de URL, plantillas de páginas y
manejo de datos.
En este tutorial de Django, se creará una aplicación Django simple que nos permitirá realizar las
operaciones CRUD para una tabla de base de datos dada. Crea esta aplicación en el contexto de
Visual Studio Code para comprender cómo trabajar con Django en la terminal, editor y depurador
de VS Code.
Prerrequisitos
Para completar con éxito este tutorial de Django, debe hacer lo siguiente:
En esta sección, crearemos un entorno virtual en el que se instala Django. El uso de un entorno
virtual evita la instalación de Django en un entorno global de Python y le brinda un control exacto
sobre las bibliotecas utilizadas en una aplicación.
1. En su sistema de archivos, cree una carpeta de proyecto para este tutorial, como
DjangoTestApp.
2. En esa carpeta, usaremos el siguiente comando (según corresponda a su computadora)
para crear un entorno virtual llamado env basado en su intérprete actual:
# Windows
python -m venv env
# Windows
cd C:\Hernan\Cursos\CETI\Curso Python CETI\Semana 6\DjangoTestApp
7. Abre la carpeta del proyecto en VS Code usando el comando Archivo> Abrir carpeta
8. En VS Code, abriremos la Paleta de comandos (Ver> Paleta de comandos o (Ctrl + Shift +
P)). Luego seleccionamos el comando Python: Seleccionar intérprete:
9. El comando presenta una lista de intérpretes disponibles que VS Code puede localizar
automáticamente. De la lista, seleccione el entorno virtual en su carpeta de proyecto que
comienza con ./env o. \ Env:
10. Ejecutar terminal: cree un nuevo terminal integrado (Ctrl + Shift + `) desde la Paleta de
comandos, que crea un terminal y activa automáticamente el entorno virtual ejecutando
su script de activación.
11. El entorno seleccionado aparece en el lado izquierdo de la barra de estado del Código VS,
y observe el indicador "(venv)" que le indica que está utilizando un entorno virtual:
12. Instalaremos Django en el entorno virtual ejecutando uno de los siguientes comandos en
el VS Code Terminal:
Ahora tienes un entorno autónomo listo para escribir código Django. VS Code activa el entorno
automáticamente cuando usa Terminal: Crear nuevo terminal integrado. Si abres un indicador de
comando o terminal por separado, active el entorno ejecutando source env / bin / generate (Linux
/ macOS) o env \ scripts \ generate (Windows). Usted sabe que el entorno se activa cuando el
símbolo del sistema muestra (env) al principio.
Para crear una aplicación Django, entonces, es necesario crear primero el proyecto Django para
que sirva como contenedor de la aplicación, luego cree la aplicación en sí. Para ambos propósitos,
utiliza la utilidad administrativa Django, django-admin, que se instala cuando instala el paquete
Django.
__init__.py: un archivo vacío que le dice a Python que esta carpeta es un paquete
de Python.
wsgi.py: un punto de entrada para servidores web compatibles con WSGI para
alojar el proyecto. Por lo general, deja este archivo tal cual, ya que proporciona los
parámetros para los servidores web de producción.
settings.py: contiene configuraciones para el proyecto Django, que modificaremos
durante el desarrollo de una aplicación web.
urls.py: contiene una tabla de contenido para el proyecto Django, que también
modifica en el curso del desarrollo.
3. Para verificar el proyecto Django, asegúrate de que su entorno virtual esté activado, luego
inicie el servidor de desarrollo de Django usando el comando
4. Ctrl + clic en la URL http://127.0.0.1:8000/ en la ventana de salida del terminal para abrir
el navegador predeterminado en esa dirección. Si Django está instalado correctamente y
el proyecto es válido, verá la página predeterminada que se muestra a continuación. La
ventana de salida del terminal VS Code también muestra el registro del servidor.
Crear una aplicación Django
El comando crea una carpeta llamada principal_app que contiene varios archivos de
código y una subcarpeta. De estos, con frecuencia trabaja con views.py (que contiene las
funciones que definen páginas en su aplicación web) y models.py (que contiene clases que
definen sus objetos de datos).
2. Modificaremos principal_app / views.py para que coincida con el siguiente código, que
crea una vista única para la página de inicio de la aplicación:
def home(request):
return HttpResponse("Hello, Django!")
urlpatterns = [
path("", views.home, name="home"),
]
urlpatterns = [
path("", include("principal_app.urls")),
]
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"console": "integratedTerminal",
"args": [
"runserver",
"--noreload"
],
"django": true
},
Esta configuración le dice a VS Code que ejecute "$ {workspaceFolder} /manage.py" utilizando el
intérprete de Python seleccionado y los argumentos en la lista de argumentos. Lanzar el
depurador de VS Code con esta configuración, entonces, es lo mismo que ejecutar python
manage.py runserver --noreload en el VS Code Terminal con su entorno virtual activado. (Si lo
desea, puede agregar un número de puerto como "5000" a los argumentos). La entrada "django":
true también le dice a VS Code que habilite la depuración de las plantillas de página de Django,
que verá más adelante en este tutorial.
Una práctica mucho mejor es mantener el HTML fuera de su código por completo mediante el uso
de plantillas, de modo que su código solo se ocupe de los valores de los datos y no de la
representación.
En Django, una plantilla es un archivo HTML que contiene marcadores de posición para los valores
que proporciona el código en tiempo de ejecución. El motor de plantillas de Django se encarga de
hacer las sustituciones al representar la página y proporciona un escape automático para evitar
ataques XSS (es decir, si intentas usar HTML en un valor de datos, verás el HTML representado solo
como texto sin formato). El código, por lo tanto, solo se refiere a los valores de datos y la plantilla
solo se refiere al marcado. Las plantillas de Django proporcionan opciones flexibles, como la
herencia de plantillas, que le permite definir una página base con un marcado común y luego
construir sobre esa base con adiciones específicas de la página.
En esta sección, comenzará creando una sola página utilizando una plantilla. En las secciones
posteriores, configurará la aplicación para que sirva archivos estáticos y luego cree varias páginas
para la aplicación que contengan una barra de navegación desde una plantilla base. Las plantillas
de Django también admiten el flujo de control y la iteración, como puede ver más adelante en este
tutorial en el contexto de la depuración de plantillas.
'principal_app',
2. Dentro de la carpeta principal_app, crea una carpeta llamada templates, y luego otra
subcarpeta llamada principal_app para que coincida con el nombre de la aplicación (esta
estructura de carpetas de dos niveles es la convención típica de Django).
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello, Django</title>
</head>
<body>
<strong>Hello there, {{ name }}!</strong> It's {{ date | date:'l,
d F, Y' }} at {{ date | time:'H:i:s' }}
</body>
</html>
El primer argumento de ruta define una ruta "principal_app /" que acepta una cadena
variable llamada nombre. La cadena se pasa a la función views.date_view especificada en
el segundo argumento de ruta.
Las rutas URL distinguen entre mayúsculas y minúsculas. Por ejemplo, la ruta /
principal_app / <name> es distinta de / Principal_app / <name>. Si desea que la misma
función de vista maneje ambos, defina rutas para cada variante.
1. Ejecutar el comando
https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud
mysqlclient-1.4.4-cp37-cp37m-win32.whl
5. En mi caso es la ruta
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'inmobiliaria',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
8. Una vez realizada esta acción, tenemos listo nuestro conector para comenzar a trabajar.
2. Utilizaremos la tabla vendedor, de tal manera que el modelo de datos, debería verse de la
siguiente manera.
from django.db import models
from django.urls import reverse
from django.core.validators import MaxValueValidator,
MinValueValidator
def __str__(self):
return self.nombre
def get_absolute_url(self):
return reverse('vendedor_edit', kwargs={'pk': self.pk})
class Meta:
db_table = 'vendedor'
def __str__(self):
return self.nombre
def get_absolute_url(self):
return reverse('vendedor_edit', kwargs={'pk': self.pk})
class Meta:
db_table = 'operacion'
def get_absolute_url(self):
return reverse('vendedor_edit', kwargs={'pk': self.pk})
class Meta:
db_table = 'provincia'
def __str__(self):
return self.nombre
def get_absolute_url(self):
return reverse('vendedor_edit', kwargs={'pk': self.pk})
class Meta:
db_table = 'tipo_inmueble'
def __str__(self):
return str(self.id_inmueble)
def get_absolute_url(self):
return reverse('vendedor_edit', kwargs={'pk': self.pk})
class Meta:
db_table = 'inmueble'
def home(request):
return HttpResponse("Hello, Django!" )
class VendedorList(ListView):
model = Vendedor
class VendedorView(DetailView):
model = Vendedor
class VendedorCreate(CreateView):
model = Vendedor
fields = ['id_vendedor', 'nombre']
success_url = reverse_lazy('vendedor_list')
class VendedorUpdate(UpdateView):
model = Vendedor
fields = ['id_vendedor', 'nombre']
success_url = reverse_lazy('vendedor_list')
class VendedorDelete(DeleteView):
model = Vendedor
success_url = reverse_lazy('vendedor_list')
class InmuebleList(ListView):
model = Inmueble
class InmuebleView(DetailView):
model = Inmueble
class InmuebleCreate(CreateView):
model = Inmueble
fields = ['id_inmueble', 'id_tipo',
'id_operacion', 'id_provincia', 'superficie',
'precio_venta']
readonly_fields = ['fecha_alta']
success_url = reverse_lazy('inmueble_list')
class InmuebleUpdate(UpdateView):
model = Inmueble
fields = ['id_inmueble', 'id_tipo',
'id_operacion', 'id_provincia', 'superficie',
'precio_venta', 'fecha_venta', 'id_vendedor']
readonly_fields = ['fecha_alta']
success_url = reverse_lazy('inmueble_list')
class InmuebleDelete(DeleteView):
model = Inmueble
success_url = reverse_lazy('inmueble_list')
Definir URLS para las páginas creadas
1. Necesitamos definir las URLs de nuestra app en el archivo principal_app/urls.py. El archivo
debería de quedar de la siguiente manera.
urlpatterns = [
path("", views.home, name="home"),
path('list', views.VendedorList.as_view(),
name='vendedor_list'),
path('view/<int:pk>', views.VendedorView.as_view(),
name='vendedor_list'),
path('new', views.VendedorCreate.as_view(),
name='vendedor_create'),
path('view/<int:pk>', views.VendedorView.as_view(),
name='vendedor_view'),
path('edit/<int:pk>', views.VendedorUpdate.as_view(),
name='vendedor_update'),
path('delete/<int:pk>', views.VendedorDelete.as_view(),
name='vendedor_delete'),
path('inmueble/list', views.InmuebleList.as_view(),
name='inmueble_list'),
path('inmueble/view/<int:pk>', views.InmuebleView.as_view(),
name='inmueble_list'),
path('inmueble/new', views.InmuebleCreate.as_view(),
name='inmueble_create'),
path('inmueble/edit/<int:pk>', views.InmuebleUpdate.as_view(),
name='inmueble_update'),
path('inmueble/delete/<int:pk>',
views.InmuebleDelete.as_view(), name='inmueble_delete'),
]
Templates
Lista
principal_app/templates/principal_app/vendedor_list.html será usado para la vista en forma de
lista.
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-
theme.min.css">
<h1>Vendedores</h1>
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-
theme.min.css">
<h1>Inmuebles</h1>
Create y Update
principal_app/templates/principal_app/vendedor_form.html será usado para la vista de creación
y actualización.
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-
theme.min.css">
<h1>Vendedor</h1>
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" class="btn btn-primary" value="Submit" />
</form>
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-
theme.min.css">
<h1>Inmueble</h1>
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" class="btn btn-primary" value="Submit" />
</form>
Delete
principal_app/templates/principal_app/vendedor_confirm_delete.html será usado para la vista de
creación y actualización.
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-
theme.min.css">
<h1>Vendedor Delete</h1>
<form method="post">{% csrf_token %}
Seguro que deseas eliminar al vendedor: "{{ object }}" ?
<input type="submit" class="btn btn-danger" value="Eliminar" />
</form>
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-
theme.min.css">
<h1>Eliminar Vendedor</h1>
<form method="post">{% csrf_token %}
Seguro que deseas eliminar al vendedor: "{{ object }}" ?
<input type="submit" class="btn btn-danger" value="Eliminar" />
</form>
Detail
principal_app/templates/principal_app/vendedor_detail.html será usado para la vista de detalle.
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet"
href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-
theme.min.css">
<h1>Vendedor Details</h1>
<h2>ID: {{object.id_vendedor}}</h2>
Nombre: {{ object.nombre }}
Todo listo!
Iniciemos nuestro servidor de aplicaciones y veamos cómo trabaja nuestra nueva página web.