Evgenij LegotskojSept. 21, 2016, 10: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.
Support the author Donate

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

Comments

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

Let me recommend you a great European Fornex hosting.

Fornex has proven itself to be a stable host over the years.

For Django projects I recommend VPS hosting

Following the link you will receive a 5% discount on shared hosting services, dedicated servers, VPS and VPN

View Hosting
V

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

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

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

  • Result:20points,
  • Rating points-10
s
  • storm
  • Jan. 20, 2023, 10:30 p.m.

C++ - Тест 003. Условия и циклы

  • Result:0points,
  • Rating points-10
Popular publications in the last 90 Days
Last comments
S

Qt WinAPI - Lesson 004. QtIFW - Automation WinDeployQt and build installers with Qt Installer Framework

Hello Evgenij, regarding the online installer, I've tried many times to use web host for the created repo after repogen step. I tried using github but I found people talking it is not …
  • juvf
  • Jan. 17, 2023, 9:18 a.m.

Qt/C++ - Lesson 051. QMediaPlayer – simple audio player

PS. Почти дописал плеер на QML. Уперся в ограничения QML. Переписываю плеер на с++/qt, а графика останится в qml. Нашел то, что мне надо, а именно индикатор звука. Qt может перехватывать аудиопо…

Qt/C++ - Lesson 039. How to paint stroke in QSqlTableModel by value in the column?

В этом случае вижу только какой-нибудь костыль в стиле перебора по всем индексам в заголовке с помощью методу headerData . То есть пройтись в for цикле пока не будет совпадения н…
a
  • avt
  • Dec. 12, 2022, 8:06 p.m.

Qt/C++ - Lesson 039. How to paint stroke in QSqlTableModel by value in the column?

Спасибо за ответ. Нет, дело не в читаемости кода, в разных таблицах у меня есть столбцы с одинаковым именем, но с разными индексами. Хотел сделать решение по имени столбца для всех таблиц сразу.…
  • juvf
  • Dec. 12, 2022, 3:06 p.m.

Qt/C++ - Lesson 051. QMediaPlayer – simple audio player

Спасибо.
Now discuss on the forum

Как создать уникальное значение поля на основе существующих значений

В принципе это можно сделать так: def unique_field(self): return '{0}_{1}'.format(self.title, self.price)class Tovar(models.Model): title=models.CharField('Наименование',max_length=…
W
  • Wayne
  • Jan. 27, 2023, 12:47 p.m.

Здравствуйте помогите с qml

как сделать так, чтобы зеленая фигура при движения за пределы круга пропадала на qml
AB

Sorting the added QML elements in the ListModel

I am writing an alarm clock in QML, I am required to sort the alarms in ascending order (depending on the date or time (if there are several alarms on the same day). I've done the sorting …

QSqlRelatipnalTabelModel Qt 4.8.1 как получить id внешней связи?

Наконец-то готовы представить полноценное развитие Qt QSqlTableModel и QTableView. Посмотреть можно у нас на сайте здесь На github здесь здесь Радостная новос…
P
  • Pisych
  • Jan. 25, 2023, 10:01 p.m.

Ввод бухгалтерского документа в одной форме

вопрос снят. спасибо за ответы. сообразил, как сделать:)
About
Services
© EVILEG 2015-2022
Recommend hosting TIMEWEB