Está en la página 1de 4

INSTALLED_APPS = [

'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'catalog.apps.CatalogConfig',
]

La nueva linea especifica el objeto de configuración de la aplicación (CatalogConfig) que se


generó para tí en /locallibrary/catalog/apps.py cuando creaste la aplicación.
Nota: Te habrás fijado que hay ya un montón de otras INSTALLED_APPS (y MIDDLEWARE, más
abajo en el fichero de ajustes). Éstas habilitan en soporte para el Sitio de admistración Django y como
consecuencia el motón de la funcionalidad que usa (incluyendo sesiones, autenticación, etc).

Especificación de la base de datos


Éste es también el punto donde normalmente especificarías la base de datos a utilizar en el proyecto —
tiene sentido usar la misma base datos para desarrollo y producción donde sea posible, para evitar
diferencias menores en el comportamiento. Puedes encontrar información sobre las diferentes opciones
de bases de datos en Databases (Django docs). 
Nosotros usaremos la base de datos SQLite para este ejemplo, porque no esperamos que se requiera un
montón de accesos concurrentes en una base de datos de demostración, y también ¡porque no requiere
trabajo adicional para ponerla en marcha! Puedes ver cómo está configurada en settings.py (más
información también se incluye abajo):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}

Debido a que usamos SQLite, no necesitamos hacer ningún ajuste adicional aquí. ¡Sigamos!

Otros ajustes del proyecto


El fichero settings.py se usa para configurar muchos otros ajustes, pero en este punto probablemente
sólo querrás cambiar la TIME_ZONE — ésta debería ser igual a una cadena de la Lista de base de
datos tz de time zones (la columna TZ column de la tabla contiene los valores que quieres). Cambia
tu TIME_ZONE al valor de entre estas cadenas que sea apropiado para tu zona de tiempo, por ejemplo:
TIME_ZONE = 'Europe/Madrid'

Hay otros dos otros ajustes que no cambiarás ahora, pero de los que deberías ser consciente:
 SECRET_KEY. Ésta es una clave secreta que se usa como parte de la estrategia de seguridad del
sitio web de Django. Si no vas a proteger este código durante el desarrollo, necesitarás usar un
código diferente (quizás leyendo de una variable de entorno o un fichero) cuando lo pongas en
producción. 
 DEBUG. Ésto habilita que los registros (logs) de depuración se muestren en caso de error, en vez
de las respuestas con los códigos de estado HTTP. Éste debería ajustarse a false en
producción, ya que la información de depuración es útil a los atacantes. 

Conectar el mapeador URL


El sitio web se crea con un fichero mapeador de URLs (urls.py) en la carpeta del proyecto. Aunque
puedes usar este fichero para gestionar todos tus mapeos URL, es más usual deferir los mapeos a su
aplicación asociada.
Abre locallibrary/locallibrary/urls.py y fíjate en el texto educativo que explica algunas formas de
usar el mapeador URL. 
"""locallibrary URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path

urlpatterns = [
path('admin/', admin.site.urls),
]

Los mapeos URL se gestionan a través de la variable urlpatterns, que es una lista Python de


funciones path(). Cada función path() o asocia un patrón URL a una vista específica, que se
presentará cuando el patrón se empareja o con otra lista de código de comprobación de patrones
URL (en este segundo caso, los patrones se convierten en la "URL base" de patrones definidos en el
módulo destino). La lista urlpatterns define inicialmente una función que mapea todos los URLs
con el patrón admin/ al módulo admin.site.urls , que contiene las definiciones de mapeos URL
propios de la aplicación de Administración.
Nota: La ruta en path() es una cadena que define un patrón URL para emparejar. Esta cadena podría
incluir una variable nombrada (entre paréntesis angulares), ej. 'catalog/<id>/'. Este patrón
emparejará con una URL como /catalog/any_chars/ y pasará a la vista any_chars como cadena
asociada al parámetro de nombre id). Trataremos de los métodos de caminos y rutas de patrones más
adelante en los últimos temas.
Añade las lineas de abajo al final del fichero para añadir un nuevo elemento a la lista urlpatterns.
Este nuevo elemento incluye un path() que redirige las peticiones con el patrón catalog/ al
módulocatalog.urls (el fichero con el URL relativo /catalog/urls.py).
# Use include() to add paths from the catalog application
from django.urls import include

urlpatterns += [
path('catalog/', include('catalog.urls')),
]

Ahora redirijamos la URL raíz de nuestro sitio (ej. 127.0.0.1:8000) al URL


127.0.0.1:8000/catalog/; esta es la única app que usaremos en este proyecto, así que es lo
que deberíamos hacer. Para hacer esto, usaremos una función especial (RedirectView), que toma
como su primer argumento la nueva URL relativa a redirigir a (/catalog/) cuando el patrón URL
especificado en la función path() se empareja (la URL raíz, en este caso).

Añade las siguientes líneas, otra vez al final del fichero:


#Add URL maps to redirect the base URL to our application
from django.views.generic import RedirectView
urlpatterns += [
path('', RedirectView.as_view(url='/catalog/', permanent=True)),
]

Deja el primer parámetro de la función path vacío, para implicar '/'. Si escribes el primer parámetro
como '/' Django te dará la siguiente advertencia cuando arranque el servidor de desarrollo:
La comprobación del sistema encontró algunos problemas:
WARNINGS:
?: (urls.W002) Tu patrón URL '/' tiene una ruta que empieza con una '/'.
Quita esta barra invertida ya que es inncesaria.
Si este patrón figura como destino en un include(), asegúrate que el patrón
include() tiene un '/' final.

Django no sirve ficheros estáticos como CSS, JavaScript e imágenes por defecto, pero puede ser útil
para el servidor web de desarrollo hacerlo así mientras creas tu sitio. Como adición final a este
mapeador URL, puedes habilitar el servicio de ficheros estáticos durante el desarrollo añadiendo las
líneas siguientes.
Añade ahora el siguiente bloque final al final del fichero:
# Use static() to add url mapping to serve static files during development (only)
from django.conf import settings
from django.conf.urls.static import static

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)


Nota: Hay numerosas formas de extender la lista urlpatterns (arriba hemos añadido simplemente
un nuevo elemento a la lista usando el operador += para separar claramente el código antiguo y el
nuevo). En vez de ello podríamos haber simplemente incluido este nuevo patrón de mapeo en la
definición de la lista original:
urlpatterns = [
path('admin/', admin.site.urls),
path('catalog/', include('catalog.urls')),
path('/', RedirectView.as_view(url='/catalog/', permanent=True)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Además, hemos incluido la linea import (from django.urls import include) con el código
que la usa (de manera que sea fácil ver qué hemos añadido), pero es común incluir todas tus líneas
import al principio del fichero Python.
Como paso final, crea un fichero dentro de tu carpeta catalog llamado urls.py, y añade el siguiente
texto para definir la urlpatterns importada (vacía). Éste es donde añadimos nuestros patrones a
medida que construimos la aplicación. 
from django.conf.urls import url

from . import views

urlpatterns = [

Prueba del framework del sitio web


En este punto tenemos un proyecto de esqueleto completo. El sitio web no hace realmente nada
todavía, pero merece la pena ejecutarlo para estar seguros de que ninguno de nuestros cambios no han
roto nada.
Antes de hacerlo, deberíamos primero ejecutar una migración de la base de datos. Ésto actualiza
nuestra base de datos para incluir todos los modelos de nuestras aplicaciones instaladas (y eliminar
algunas advertencias de construcción).

También podría gustarte