Evgenii Legotckoi
Evgenii LegotckoiSept. 21, 2016, 12:13 a.m.

Django - Tutorial 006. Customizing error pages 403, 404, 500

Many resources are decorated error pages if there is a failure in processing a request from the client.
For a start has been made on the site customization of the most frequently occurring errors and other debugging until you come across, but still ahead.

As announced at the beginning of this article, was to customize the following error:

  1. 403 - Authorization error, access is denied.
  2. 404 - Page Not Found;
  3. 500 - Internal server error;

Customization error 404, 500

To customize the error 404 and 500 need to write a request handlers, and enough to write their ideas in the form of method.

The templates add your customized html file, that is:

  • error404.html
  • error500.html

The module that implements presentation for the site - home . The templates of the same module placed themselves customized templates errors.

Override the default handler in urls.py in the main module of site:

  • handler404
  • handler500

In the code, it looks like this:

from home.views import e_handler404, e_handler500

handler404 = e_handler404
handler500 = e_handler500

We describe the presentation in views.py home module file:

from django.shortcuts import render_to_response
from django.template import RequestContext


def e_handler404(request):
    context = RequestContext(request)
    response = render_to_response('error404.html', context)
    response.status_code = 404
    return response


def e_handler500(request):
    context = RequestContext(request)
    response = render_to_response('error500.html', context)
    response.status_code = 500
    return response

Customization Errors 403

Error 403 occurs when an authorized user is not trying to gain access to that part of the site to which access is restricted to authorized users.

In Django is reached by the test status of the user and adding to the pages of the protective token, CSRF mechanism. This error can occur and if the user is logged in, but performs actions that require CSRF token verification, and the token is lost or is not true. The fact is that for the correctness of the token, you need to add in the template in the form of a special tag:

{% csrf_token %}

It will be entered and the token, but just to add to the template, it is not enough. Before you start rendering the template, you must add a token to the context that will be passed to the template. I.e,

from django.template.context_processors import csrf
from django.shortcuts import render_to_response


def any_request(request):
    context = {}
    context.update(csrf(request))

    ...
    return render_to_response('any_request.html', context=context)

And now about customization. For csrf necessary that settings.py file added csrf module and indicated a view that will be engaged in the processing of this error:

MIDDLEWARE = [
    ...
    'django.middleware.csrf.CsrfViewMiddleware',
    ...
]

CSRF_FAILURE_VIEW = 'home.views.csrf_failure'

The templates add error403.html, and views.py file prescribe processor performance.

def csrf_failure(request, reason=""):
    context = RequestContext(request)
    response = render_to_response('error403.html', context)
    response.status_code = 403
    return response

For Django I recommend VDS-server of Timeweb hoster .

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

Супер, очень полезно!

Comments

Only authorized users can post comments.
Please, Log in or Sign up
AD

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:50points,
  • Rating points-4
m

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:80points,
  • Rating points4
m

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:20points,
  • Rating points-10
Last comments
ИМ
Игорь МаксимовNov. 22, 2024, 11:51 a.m.
Django - Tutorial 017. Customize the login page to Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiOct. 31, 2024, 2:37 p.m.
Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEOct. 19, 2024, 8:19 a.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовOct. 5, 2024, 7:51 a.m.
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5July 5, 2024, 11:02 a.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Now discuss on the forum
Evgenii Legotckoi
Evgenii LegotckoiJune 24, 2024, 3:11 p.m.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Nov. 15, 2024, 6:04 a.m.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectJune 4, 2022, 3:49 a.m.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9AnonimOct. 25, 2024, 9:10 a.m.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Follow us in social networks