J'ai étudié comment créer une page d'erreur telle que 404 Not Found, donc je vais la résumer.
Je vais aborder les codes d'erreur suivants.
Sous n'importe quel répertoire de modèles,
Endroit. Ensuite, lorsque l'erreur cible est générée, le modèle sera lu automatiquement.
myproject
- myapp
- urls.py
- views.py
- models.py
- app.py
- forms.py
- templates
- 403.html
- 404.html
- 500.html
Implémentez votre propre page 404, etc. comme ci-dessous.
404.html
{% extends "base.html" %}
{% block content %}
<section>
<div>
<label>404 Not Found<br>La page que vous recherchez est introuvable.<br><a class="hover-under" href="{% url 'top' %}">Retour en haut de la page</a></label>
</div>
</section>
{% endblock %}
Ces pages sont renvoyées lorsque vous appelez l'exception pour laquelle chaque code d'état doit être renvoyé.
404 Not Found
Soulevez la classe Http404
dans le package django.http
.
views.py
from django.http import Http404
class MyView(View):
def index(self):
raise Http404
403 Forbidden
Il existe une classe PermissionDenied
dans django.core.exceptions
.
views.py
from django.core.exceptions import PermissionDenied
class MyView(View):
def index(self):
if not self.request.user.is_authenticated:
raise PermissionDenied
500 Internal Server Error Utilisez des erreurs normales qui ne détectent pas ou ne renvoient pas explicitement ce qui entraînerait une InternalServerError normale, telle qu'une erreur de syntaxe.
views.py
from .models import Example
class MyView(View):
def index(self):
try:
_instance = Example.objects.get(id=1)
except Example.DoesNotExists:
#Lancer une exception (généralement pas beaucoup)
raise Exception
Recommended Posts