Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/alfonsoolavarria/florilegio/llms.txt

Use this file to discover all available pages before exploring further.

Florilegio de la Fe está construido sobre Django 4.2 siguiendo el patrón MVT (Model–View–Template): los modelos en main_florife/models.py describen el esquema de datos sobre PostgreSQL, las vistas en main_florife/views.py (y sus módulos hermanos) contienen la lógica de negocio, y los templates HTML en templates/ producen las respuestas finales. Un único proyecto Django llamado florilegiofe aloja la app principal main_florife, que concentra todo el dominio editorial, bíblico y de usuarios.

Estructura de la aplicación

Directorio / MóduloRol
florilegiofe/Proyecto Django: settings.py, urls.py, wsgi.py, asgi.py
main_florife/App principal: modelos, vistas, admin, middleware, context processors, management commands, adaptadores de autenticación
templates/Templates HTML del frontend (cargados con APP_DIRS=True y el directorio raíz configurado en TEMPLATES[0]['DIRS'])
biblia/morphhb/Datos morfológicos del hebreo bíblico (Open Scriptures Hebrew Bible — OSHB)
static/Archivos estáticos de desarrollo (CSS, JS, imágenes). En producción se sirven con WhiteNoise desde staticfiles/
media/Archivos subidos por usuarios, principalmente fotos de autores

Flujo de una petición

Cuando un navegador solicita, por ejemplo, /articulo/la-gracia-de-dios/, el ciclo es el siguiente:
Petición HTTP

Django MIDDLEWARE STACK  (SecurityMiddleware → WhiteNoise → Session → CSRF
                          → Auth → Messages → XFrame → SecurityHeadersMiddleware)

florilegiofe/urls.py  →  path("articulo/<slug:slug>/", views.article_detail)

main_florife/views.py  →  article_detail(request, slug)
    │   Article.objects.get(slug=slug, status='liberado')  [ORM → PostgreSQL]
    │   Category.objects.all()

render(request, 'blog-details.html', context)

Respuesta HTML
El enrutador raíz es florilegiofe/urls.py (ROOT_URLCONF = 'florilegiofe.urls'). Éste importa directamente las vistas de main_florife y delega las rutas OAuth a allauth.urls mediante include. Las rutas de administración de la Biblia, YouVersion y el portal de autores se dividen en módulos de vistas separados (views_api_bible, views_youversion, views_authors).

Middleware de seguridad

La pila de middleware se define en settings.MIDDLEWARE en este orden:
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'main_florife.middleware.SecurityHeadersMiddleware',
]
SecurityHeadersMiddleware (definido en main_florife/middleware.py) es el último en ejecutarse y añade dos cabeceras de seguridad a todas las respuestas:
CabeceraValor
Referrer-Policystrict-origin-when-cross-origin
Permissions-Policygeolocation=(), microphone=(), camera=()
En producción (DEBUG=False) se activan adicionalmente SECURE_SSL_REDIRECT, SECURE_HSTS_SECONDS = 31536000, cookies seguras de sesión y CSRF, y SECURE_CONTENT_TYPE_NOSNIFF.

Context processors

main_florife/context_processors.py registra el processor seo, disponible en todos los templates, que inyecta tres variables globales:
VariableValor por defecto
seo_title"Florilegio de la Fe - Teología, Historia y Biografías Cristianas"
seo_description"Profundiza en la intimidad con Dios a través de artículos de teología, historia de la iglesia, biografías cristianas y estudio bíblico."
seo_image"images/ff.jpg"
Las vistas individuales pueden sobreescribir estos valores en su propio context dict para personalizar las meta-etiquetas SEO por página.

Autenticación

Florilegio combina tres mecanismos de autenticación registrados en AUTHENTICATION_BACKENDS:
  1. ModelBackend — autenticación estándar de Django por usuario y contraseña.
  2. EmailBackend (main_florife.auth_backends.EmailBackend) — permite iniciar sesión con correo electrónico en lugar de nombre de usuario.
  3. allauth.account.auth_backends.AuthenticationBackend — OAuth2 a través de django-allauth con el proveedor Google configurado con PKCE.
El registro propio (/registro/) crea el usuario con is_active=False, genera un código de 6 dígitos, lo envía por Brevo con una plantilla transaccional y activa la cuenta sólo tras la verificación en /verificar-email/. La vista de registro está protegida con @ratelimit(key='ip', rate='5/h').

Data Models

Referencia completa de todos los modelos Django: Editorial, Bíblico, Usuarios y más.

Tech Stack

Dependencias, servicios externos y fuentes de datos bíblicos.

Build docs developers (and LLMs) love