Skip to content
Gallery
DB App-Eat-Easier v3.0
Share
Explore
Cookbooks

icon picker
Django Installation

Este es el cookbook de Instalación & Setup Inicial para DJANGO REST FRAMEWORK:
Usar como Referencia el siguiente Git-Hub con el Repo del Proyecto de Ejemplo:
Hay diferentes ramas, conforme se fueron agregando features
También hay diferentes commits, por lo cual hay tener cuidado con el código ya que hay variaciones
Crear directorio vacio con un nombre que identifique el proyecto o la app
hacer los updates de linux con sudo apt
Generar el ambiente virtual con:
python3 -m venv env:
link de apoyo:
tambien puede ser virtualenv <folder_name> | <nombre_entorno>
después encendemos el entorno
source <nombre_entorno>/bin/activate
ej. source env/bin/activate | source mypython/bin/activate
Hacer las instalaciones através de PIP (PIP3 preferencia)
Sirve validar las actualizaciones, sino generarlas
sudo apt update_
muchas veces necesita actulizarse ubuntu para encontrar las paqueterias más actualizadas
pip install -U pip setuptools wheel
Muchas veces es necesario actualizar el PIP para tener las paqueterias más recientes
Si no se tiene el archivo requirements.txt:
pip3 install django
pip3 install djangorestframework
pip3 install psycopg2-binary
pip3 install django-cors-headers
pip3 install django-filter
pip3 install python-dotenv
pip3 install ipython
y así sucesivamente para las demás
Si se cuenta con el archivo requirements.txt asi se debe instalar
pip3 install -r /path/to/requirements.txt
Es muy importante usar -r porque muchas veces no lo ejecuta sin la r
Si NO se cuenta con el archivo requirements.txt se puede generar así
pip freeze > requirements.txt
Entrar a requirements.txt y validar que se transfiera solo lo necesario
De lo contrario borrarlo ya que son dependencias que se intalaran nuevamente en automático
Este es el requirements.txt (primeras 5 son esenciales) minimo necesario
Django==3.2.5
djangorestframework==3.12.4
ipython==7.25.0
psycopg2==2.9.1 → si se instalo la versión binaria, hay que hacerlo asi:
psycopg2-binary==2.9.1
pip3 install psycopg2-binary → usar este comando de forma manual
python-dotenv==0.19.0
django-filter==2.4.0
django-cors-headers==3.7.0
generar el proyecto desde django-admin
django-admin startproject <nombre_proyecto>
ej. django-admin startproject dogtor
y genera un directorio “dogtor” al mismo nivel que el de venv
Crear el super usuario para Django:
python createsuperuser
username, email & password
después crear el archivo requirements.txt
$ pip freeze > requirements.txt
(con esto se vacia lo que contenga pip en el archivo de manera automática, solo linux/wsl2)
a excepción de que ya contemos con él seria direccionarlo como sigue:
pip3 install -r /path/to/requirements.txt | pip3 install -r requirements.txt
links de referencia:
Se genera el git init para ya irlo sincronizando al repo
se inicializa a la altura de y requirements.txt
Generar nuestro archivo .gitignore
touch .gitignore
a la misma altura de
este es el link de referencia para django:
Crear la base de datos
Si es con DBEaver:
En general con DBEaver como visualizador y validador
Pero para el arranque hacemos lo siguiente através de DBeaver
creamos la base de datos
y al menos un usuario admin
dando click sobre la base de datos, botón derecho y en el menú create role
esto es para que django se pueda authenticar dentro de la DB y puedas usarla
En caso de tener un problema con dicho usuario, generar con DBEaver un superuser y actualizar las credenciales en los .env
Si es con Terminal usar psql pero en otra terminal diferente y fuera del ambiente virtual de python, esto para poder ingresar a los comandos de postgresql → (1:07:00 de la grabación)
$ \l → lista las bases de datos
$ CREATE DATABASE <database_name>;
$ \l → lista las bases de datos
$ \du → lista todos los usuarios en el servidor
$ CREATE USER admin WITH PASSWORD ‘12345’; → (con comillas simples)
cuando se crea no se genera con ningún atributo de superuser o admin
$ CREATE ROLE (to be confirmed)
Al final Asegurar que el servidor de postgresql esta corriendo sino se puede validar asi:
sudo service postgresql start
sudo service postgresql restart
systemctl status postgresql → te da el estado del server
Si no funciona con psql → usar sudo su postgres → y entras a la terminal
Generar el .env
de igual manera a la altura de
abrir el vscode y generar el archivo .env
ingresar las variables de entorno que necesitamos
DJANGO_SECRET_KEY= puede usar este link: para generar el hash
DJANGO_DEBUG=True
DM_NAME=<db_name_in_postgresql>
DB_USER=<user_name>
DB_PASSWORD=<custom>
DB_HOST=localhost
DB_PORT=5432
TIP → formatter autopep8 → select option “use black”
Agregar la libreria de python que maneja las variables de ambiente
esto con ayuda de la libreria os → import os
from dotenv import load_dotenv
y para usarlo con os.getenv(”NOMBRE_VARIABLE”)
Configurar los settings básicos en y desde .env traer las respectivas variables para:
SECRET KEY:
siendo la primera vez que se configura se puede usar este link:
DEBUG
ALLOWED_HOSTS
ALLOWED_HOSTS = [*]
CORS_ORIGIN_ALLOW_ALL = true
CORS_ALLOWED_ORIGINS = ["http://localhost:5500"] → para hacer pruebas locales
DATABASES
name
user
password
address
port
INSTALLED APPS:
rest_framework
corsheaders
django_filters
MIDDLEWARE_CLASSES:
→ Nota especial, este debe quedar lo más arriba posible de este siguiente middleware
→ este debe de estar más abajo que el CORS
REST FRAMEWORK:
Este normalmente no se encuentra, este hay que adicionarlo una vez que necesitamos agregar parametros extas, como los de Authentication
Si todo esta bien, generar las migraciones:
python makemigrations
python migrate
si aplica todas las migraciones entonces todo esta correcto
esto porque django ya trae migraciones ocultas de modelos de usuarios, permisos, etc.
se puede usar python shell para interactuar directamente con el ORM de Django
correr el server validar que todo ok:
python runserver
localhost:8000 | 127.0.0.1:8000
localhost:8000/admin/ para entrar a la consola del admin y validar permisos del usuario que acabamos de crear
correr el startapp:
python startapp <nombre_app>
registrarlo en settings en el area de apps el <nombre_app>
generar los modelos
hacer las migraciones
validarlo que se creo en la base de datos
después registrarlo en admin.py de la app
después re-arrancar el server
entrar al 172.0.0.1:8000/admin y podemos interactuar

TIPs:
related_name tiene que ser el plural de la clase
tanto one to many como para many to many
django funciona con mixings y multiherencia
lo mismo REST-Django

SETTINGS:
SECRET_KEY = os.getenv("DJANGO_SECRET_KEY")
DEBUG = bool(os.getenv("DJANGO_DEBUG", True))
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql_psycopg2",
"NAME": os.getenv("DB_NAME"),
"USER": os.getenv("DB_USER"),
"PASSWORD": os.getenv("DB_PASSWORD"),
"HOST": os.getenv("DB_HOST"),
"PORT": os.getenv("DB_PORT"),
}
}

.ENV:
DJANGO_SECRET_KEY=El hash lo puedes crear en este link →
DJANGO_DEBUG=True
DB_NAME=<database_name>
DB_USER=<user_name>
DB_PASSWORD=<custom_password>
DB_HOST=localhost
DB_PORT=5432

REST FRAMEWORK
REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES": (
"rest_framework.authentication.TokenAuthentication",
),
}

from django.contrib import admin
from .models import Pet, PetOwner
admin.site.register(Pet)
admin.site.register(PetOwner)

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.