🐍
Django
Estructura base proyecto en Django con Pycharm 🐍
Carpetas base
Configuración inicial
Archivo - Requirements
Configuración de Base de datos
Crear App principal del proyecto
Modelos
Migrar el modelo a la base de datos
Modelo - ForeingKey
Modelo - ManyToMany
Esto es otro titulo
Librerias Adicionales 01
Pillow
ORM de Django
Panel de Administrador en Django
Urls en Django
Conjunto de URLS
Templates
Configurando archivos estáticos
🐍
Estructura base proyecto en Django con
Pycharm
Carpetas base
Django 1
Crear una carpeta con el nombre del proyecto que contendra dos directorios
"app" para el sistema y "env" para el entorno virtual.
Configuración inicial
Al momento de crear un nuevo proyecto crear un directorio principal "core",
destildar que Pycharm genere una app "core" solo se necesita el directorio
como contenedor, en el mismo crear un archivo "__init__.py" para que
Django lea los archivos python contenidos en "core"
La carpeta de configuración que contiene el "settings.py" (Configuracion
inicial del proyecto) se creara con el nombre donde se esta almacenando el
proyecto en este caso es "app" renombrar a "config", con el IDE Pycharm
se creara automaticamente una carpeta base para los templates.
Django 2
Luego de cambiar el nombre de la carpeta validar en el archivo settings que
ROOT_URLCONF tenga actualizado el nuevo nombre en caso contrario
actualizarlo a "config".
Django 3
Entrar en opciones file - settings - Languages & Frameworks - Django y
actualizar la ruta del settings con el nuevo nombre del directorio "config"
Archivo - Requirements
Es el archivo que contiene los nombres y versiones de los paquetes y
aplicaciones de terceros instaladas en el entorno virutal para el funcionamento
del proyecto.
Crear un directorio "requirements" en "app" y ejecutar en el terminal dentro de
la ruta el comando:
pip freeze > requirements.txt
Configuración de Base de datos
Crear dentro del directorio "config" un archivo con el nombre "base.py" con
esta configuración.
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__f
SQLITE = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
Django 4
}
}
POSTGRESQL = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db',
'USER': 'postgres',
'PASSWORD': '123',
'HOST': 'localhost',
'PORT': '5432'
}
}
Instalar en el entrono virtual el paquete "psycopg2" el mismo es un adaptador
PostgreSQL para el lenguaje de programación Python. Se puede instalar desde
el terminal con el entrono virtual activo o por el menu de opciones en Pycharm.
En el archivo "settings" reemplazar la informacion por defecto de # from pathlib
import Path por:
import os.path
y de:
BASE_DIR = Path(__file__).resolve().parent.parent
por :
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__f
en TEMPLATES cambiar el DIRS a
'DIRS': [os.path.join(BASE_DIR, 'templates')]
Django 5
Esta variable lo que permite es obtener la ruta del directorio del proyecto.
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__f
Terminado los ajustes , ejecutar el comando "migrate" desde la consola del
entorno virtual, para exportar las tablas por defecto del proyecto en Django a la
base de datos.
Crear App principal del proyecto
La app principal contiene los modelos realcionados a la logica del negocio del
proyecto a desarrollar. Desde el terminal con el entorno virtual activado
ejecutar dentro de la ruta /app/core$
python ../manage.py startapp sgs
Modelos
Los modelos son representaciones de las entidades en la base de datos, se
escribiran en el archivo "models.py"
con la funcion "def __str__(self):" se le indica al modelo que devuelva por
defecto un string con el valor del campo que le indiquemos.
from django.db import models
class ServerRole(models.Model):
func_serv_id = models.AutoField(primary_key=True)
func_serv_desc = models.CharField(max_length=100, null=Fal
def __str__(self):
return self.func_serv_desc
Django 6
Con la Clase "Meta" se define un nombre para la tabla en la base de datos, en
caso de no colocarla se creara con el nombre indicado en el modelo.
El atributo "verbose_name" de la clase sirve para definir el nombre que se
mostrara para la tabla al visualizarla desde el Administrador de Django.
Con "ordering" se indica el orden por defecto al listar el contenido de la tabla.
class Meta:
verbose_name = 'Función del Servidor'
verbose_name_plural = 'Función del Servidor'
db_table = 'funcionservidor'
ordering = ['func_serv_id']
Antes de realizar cualquier migracion de un nuevo modelo se debe indicar en el
settings.py INSTALLED_APPS, las aplicaciones creadas.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Apps
'core.sgs'
]
Migrar el modelo a la base de datos
Primero ejecutar desde el terminal con el entorno virtual activo.
python manage.py makemigrations
Donde se validara la configuracion del nuevo modelo.
Django 7
Y luego ejecutar.
python manage.py migrate
Django 8
Modelo - ForeingKey
Para indicar al modelo una clave foranea es necesario indicar un nombre para
el mismo (que sea representativo del modelo que relaciona) usar la palabra
reservada ForeingKey y entreparentesis el nombre del modelo del que viene la
relación.
tipo_acceso = models.ForeignKey(TypeAccessServer, null=False,
Modelo - ManyToMany
Para indicar una relacion muchos a muchos es necesario indicar un nombre
para el mismo (que sea representativo del modelo que relaciona) usar la
palabra reservada ManyToManyField y entreparentesis el nombre del modelo
del que viene la relación. Una de las ventajas del FrameWork Django para este
tipo de relación es que al realizar la migración a la base de datos generara de
forma automatica la tabla adicional que servira de relación para los dos
modelos
categ = models.ManyToManyField(Type, on_delete=models.PROT
Esto es otro titulo
Librerias Adicionales 01
Pillow
Para el uso de imagenes en Django es necesaria la libreria "pillow", se instala a
traves de "pip" en el terminal o menu del interprete en el caso de PyCharm
ORM de Django
Mapeo de objeto relacional , es decir permite interactuar con muchas cosas de
la base de datos a manera de objetos.
Django 9
Panel de Administrador en Django
PENDIENTE POR SUBIR INFO
Urls en Django
Django funciona bajo el esquema :
Modelo —> (BASE DE DATOS)
Vistas —> (FUNCIONES)
Templates —> (PANTALLAS)
En primera instancia la configuración basica de url's se realiza en el archivo
urls.py
from django.contrib import admin
from django.urls import path
#El path se importa para tener la ruta absoluta
#donde esta alojada el proceso
urlpatterns = [
path('admin/', admin.site.urls),
path('prueba/', myfirstview)
]
En este ejemplo el archivo urls.py hace referencia a una vista basada en
funcion llamada "myfirstview"
from django.http import HttpResponse
Django 10
def myfirstview(request):
return HttpResponse('Hola esta es mi primera URL')
Conjunto de URLS
En el directorio de la app principal crear un archivo urls.py
from django.urls import path
from core.erp.views import myfirstview # Importar la vista de
urlpatterns = [
path('uno/', myfirstview)
path('dos/', myfirstview)
]
En este caso se ajustaría el archivo urls.py del directorio "config" , importando
el conjunto de urls con el atributo "include"
from django.contrib import admin
from django.urls import path, include
#El path se importa para tener la ruta absoluta
#donde esta alojada el proceso
urlpatterns = [
path('admin/', admin.site.urls),
path('prueba/', include('core.erp.urls'))
]
Templates
Configurando archivos estáticos
Django 11
Recomendado ——> Leer documentacion de static files en pagina de Django.
Managing static files (e.g. images, JavaScript, CSS) | Django documentation | Django
Websites generally need to serve additional files such as images, JavaScript, or CSS. In Django, we
refer to these files as "static files". Django provides django.contrib.staticfiles to help you manage
them. This page describes how you can serve these static files. Make sure that
https://docs.djangoproject.com/en/3.1/howto/static-files/
1. Asegúrese de que django.contrib.staticfiles esté incluido en
su INSTALLED_APPS .
2. En su archivo de configuración, defina STATIC_URL , por ejemplo:
STATIC_URL = '/static/'
Su proyecto probablemente también tendrá archivos estáticos que no están
vinculados a una aplicación en particular. Además de usar un static/ directorio
dentro de sus aplicaciones, puede definir una lista de directorios
( STATICFILES_DIRS ) en su archivo de configuración donde Django también
buscará archivos estáticos. Por ejemplo:
`STATICFILES_DIRS = [
BASE_DIR / "static",
'/var/www/static/',
]`
Django 12