Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Curso Básico de Django

Curso Básico de Django

Facundo García Martoni

Facundo García Martoni

Ajustando el archivo settings.py

8/29
Recursos

Aportes 19

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Me llamo la atencion AUTH_PASSWORD_VALIDATORS. Segun la documentacion “La validación está controlada por la configuración AUTH_PASSWORD_VALIDATORS. El valor predeterminado para la configuración es una lista vacía, lo que significa que no se aplican validadores. En los proyectos nuevos creados con la plantilla startproject predeterminada, se habilita un conjunto de validadores de forma predeterminada.”

UserAttributeSimilarityValidator, que comprueba la similitud entre la contraseña y un conjunto de atributos del usuario.

MinimalLengthValidator, que comprueba si la contraseña cumple una longitud mínima. Este validador está configurado con una opción personalizada: ahora requiere que la longitud mínima sea de nueve caracteres, en lugar de los ocho predeterminados.

CommonPasswordValidator, que comprueba si la contraseña aparece en una lista de contraseñas comunes. De forma predeterminada, se compara con una lista incluida de 20 000 contraseñas comunes.

NumericPasswordValidator, que comprueba si la contraseña no es completamente numérica.

En mi caso me llamó la atención la última linea.

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

Según la documentación, en esta Setting podemos cambiar el tipo de Primary Key que tendrán por default los Modelos que creemos, cuando no definamos explicita-mente la propiedad primary_key en algún atributo de nuestro Modelo.

id = models.BigAutoField(primary_key=True)

BigAutoField refiere a un número entero de 64-bits que incrementa automáticamente y va del 1 al 9223372036854775807

STATIC_URL, indica que en la carpeta de nombre static se van a encontrar todos esos archivos adicionales al proyecto, como imágenes, javascript files and css files. No viene creada por default por lo que es necesario crearla por nosotros y bajo ese nombre (static) por recomendación de Django.

Antes de realizar nuestro primer commit

Es buena práctica también ignorar ciertos archivos y directorios en el archivo .gitignore para evitar conflictos al llevar nuestro proyecto a repositorio remotos.

Les comparto mi archivo .gitignore tomando como base archivos .gitignore para python con django y perzonalizandolo para ignorar archivos multimedia que no quisiera subir. Todo lo pude personalizar a su gusto teniendo como base este .gitignore. 😉

El middleware es un marco de enlaces en el procesamiento de solicitud/respuesta de Django. Es un sistema de «complemento» ligero y de bajo nivel para alterar globalmente la entrada o salida de Django.

Cada componente de middleware es responsable de realizar alguna función específica. Por ejemplo, Django incluye un componente de middleware, AuthenticationMiddleware, que asocia usuarios con solicitudes mediante sesiones.

Una variable que tienes que modificar es SECRET_KEY
En mi caso voy a utilizar un archivo llamado config.ini que estará agregado también en .gitignore

  1. Crear el archivo config.ini
  2. Agregar estos datos en el archivo config.ini:
;ejemplo:
[LLAVE]
SECRET_KEY = llave_tipo_string_sin_comillas
  1. En el archivo de settings con extención .py, agregar estas líneas de código:
import configparser

config = configparser.RawConfigParser()
config.read('config.ini')

SECRET_KEY = config['LLAVE']['SECRET_KEY']

Al poner en DIRS os.path.join(BASE_DIR,‘templates’) hace que django busque los templates en la carpeta templates de la ruta base del proyecto. S tuvieras aplicaciones, también podrías crear tu propia carpeta templates dentro de cada aplicación y tendrías que agregar las aplicaciones en INSTALLED_APS para que se pudieran encontrar los templates.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

5:33 - No me la contés!!! Lo tapan arriba pero no acá Dx

Muy bien!

Middleware:

  • Es un sistema de plugins muy ligero y de bajo nivel capaz de alterar de forma global tanto la entrada como la salida de Django. Cada componente middleware es responsable de hacer alguna función específica.
  1. class SecurityMiddleware
    The django.middleware.security.SecurityMiddleware provides several security enhancements to the request/response cycle. Each one can be independently enabled or disabled with a setting.

  2. CommonMiddleware

Before any middleware that may change the response (it sets the Content-Length header). A middleware that appears before CommonMiddleware and changes the response must reset Content-Length.

Close to the top: it redirects when APPEND_SLASH or PREPEND_WWW are set to True.

After SessionMiddleware if you’re using CSRF_USE_SESSIONS.

  1. CsrfViewMiddleware

Before any view middleware that assumes that CSRF attacks have been dealt with.

Before RemoteUserMiddleware, or any other authentication middleware that may perform a login, and hence rotate the CSRF token, before calling down the middleware chain.

After SessionMiddleware if you’re using CSRF_USE_SESSIONS.

  1. AuthenticationMiddleware

After SessionMiddleware: uses session storage.

  1. SessionMiddleware es el middleware que Django maneja el almacenamiento de sesiones de forma predeterminada.

Configuraciones basicas del archivo settings .py

DATABASES: Configuración y conexión a la BD. (Django no soporta bases de datos no relacionales):

DATABASES = {
	'default': {
		'ENGINE': 'django.db.backends.sqlite3',
		'NAME': BASE_DIR / 'db.sqlite3',
	}
}

TIME_ZONE: Define la zona horaria del programa

TIME_ZONE = 'UTC'

INSTALLED_APPS: Indica cuáles son las aplicaciones instaladas en el proyecto

INSTALLED_APPS = [
	'django.contrib.admin', # Administrador de Django
	'django.contrib.auth', # Maneja la autenticacion de usuarios
	'django.contrib.contenttypes', # Maneja formatos de archivos
	'django.contrib.sessions', # Maneja sesiones de usuarios
	'django.contrib.messages', # Maneja comunicaciones entre usuarios
	'django.contrib.staticfiles', # Maneja archivos estaticos (HTML, CSS, JS)
]

Lo que investigue fue sobre: “from pathlib import Path”:

Es una librería de Python3 para manipular archivos de manera agnóstica, enumerando archivos y haciendo una ruta automática con estos mismos.

dia 1

Variable USE_I18N: Según la documentación, Django cuenta con un sistema de traducción, y este variable sirve para habilitar o deshabilitar dicho sistema .

DEFAULT_AUTO_FIELD = ‘django.db.models.BigAutoField’, por default esta variable almacena el tipo de dato para los campos AutoField que se manejan en cada modelo. Anteriormente en versiones más antiguas de django por defecto era Autofield (Integer) y veo que en esta versión ya incluye un tipo de dato más grande. Esto es importante cuando se manejan grandes cantidades de registros.

Hacer un Commit

Desde la consola y dentro del ambiente virtual:
.
1- Colocar el usuario y el correo de la cuenta de GitHub, esto se hace una sola vez en el proyecto:

git config --global user.name "goku"
git config --global user.email "[email protected]"

2- Crea un paquete temporal en la computadora:

git add -A

3- Confirmar el envío, es decir, hacer un Commit. Esto aun sigue siendo a nivel local. También se debe colocar un título al Commit.

git commit -m "Este el primer paquete commit del proyecto"

Para modificaciones en el código, no es necesario reiniciar el servidor de desarrollo porque se recarga automáticamente

Pero para la adición de archivos como se dio el caso en la clase, si es necesario reiniciar el servidor de desarrollo.

Primero detenemos el servidor (Si tienes corriendo el servidor):

Ctrl + C

Luego corremos nuevamente el servidor:

python3 manage.py runserver