Cada vez que uno intenta visitar un enlace que no existe en un sitio web, da un error 404, que no se encuentra esta página. Del mismo modo, hay más códigos de error como 500, 403, etc. Django tiene algunas funciones predeterminadas para manejar errores HTTP. Vamos a explorarlos uno por uno.
Vistas de error integradas en Django –
Vista 404 (página no encontrada) –
Normalmente, esta vista se usa para representar la plantilla 404 básica cuando la URL solicitada no está disponible en el servidor. Esta situación ocurre de forma predeterminada. Django genera la vista django.views.defaults.page_not_found() y presenta la plantilla de error default404. Puede personalizarlo agregando una página 404.html personalizada dentro de la carpeta de plantillas.
500 vistas (error del servidor) –
Esta vista se usa cuando el servidor se bloqueó o no respondió a nada. En este caso, Django tiene la función predeterminada django.views.defaults.server_error() para representar el error del servidor para esta vista. También puede personalizarlo agregando su página 500.html dentro de la carpeta de plantillas.
Vista 403 (Prohibido) –
Cuando el usuario no tiene permiso para ver una página en particular pero solicita ver esa página. En ese caso entra en juego la vista 403. Dice que la página está prohibida y no mostrará la página a ese usuario. Para eso, Django tiene la función django.views.defaults.permission_denied() para representar la plantilla prohibida. Mantiene su privacidad y solo los usuarios autorizados pueden acceder a ciertas páginas. También puede personalizarlo agregando su página 403.html dentro de la carpeta de plantillas.
Suponga que tiene un sitio web de comercio electrónico y solo desea que los comerciantes autenticados enumeren los productos. Los compradores y los usuarios normales no pueden publicar sus productos. Puede agregar esta funcionalidad en Django así:
from django.core.exceptions import PermissionDenied def upload(request, pk): if not request.user.is_merchant: raise PermissionDenied # your code here.....
Vista 400 (solicitud incorrecta):
Django utiliza la vista 400 o Solicitud incorrecta cuando alguien intenta acceder a una página confidencial de su sitio, lo que puede provocar que su sitio sea pirateado o filtre datos confidenciales. Por lo tanto, no desea que nadie acceda a esa página. Django tiene django.views.defaults.bad_request() para generar 400 vistas para cualquier tipo de SuspiciousOperation. Esto evita que su sitio tenga gente mala.
Personalizar vistas de error integradas en Django –
Ahora, veamos cómo personalizar estas vistas de error. En primer lugar, debe ingresar a settings.py y establecer Debug=False.
DEBUG = False ALLOWED_HOSTS = ['localhost', '127.0.0.1']
Cree una carpeta dentro del proyecto y asígnele el nombre que desee, aquí le doy el nombre de ‘ plantillas ‘ a esa carpeta. Ahora ve a settings.py y establece el directorio de plantillas.
TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')
Ahora, dentro del directorio de plantillas, puede crear archivos html ‘404.html’, ‘500.html’, ‘403.html’, ‘400.html’, etc. Después de crear estas páginas, muestre sus habilidades HTML y personalice las páginas usted mismo. . Agregue el nombre de su aplicación en settings.py.
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'jquery', 'geeks' ]
Agregue el método del controlador a urls.py
handler404 = 'myappname.views.error_404' handler500 = 'myappname.views.error_500' handler403 = 'myappname.views.error_403' handler400 = 'myappname.views.error_400'
Ahora configure la lógica para mostrar estas páginas en views.py
from django.shortcuts import render def error_404(request, exception): return render(request,'404.html') def error_500(request, exception): return render(request,'500.html', data) def error_403(request, exception): return render(request,'403.html') def error_400(request, exception): return render(request,'400.html', data)
Ahora, ya está todo listo para ejecutar el servidor y ver estas páginas de manejo de errores creadas por usted.
To run server: python manage.py runserver
Publicación traducida automáticamente
Artículo escrito por romilvishol y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA