Evgenii Legotckoi
Evgenii LegotckoiҚыр. 21, 2016, 12:13 Т.Ж.

Django - 006-сабақ. 403, 404, 500 қате беттерін теңшеу

Клиенттің сұрауы өңделмесе, көптеген ресурстарда стильдік қате беттері бар.
Ең алдымен, сайтта жиі кездесетін қателерді теңшеу жасалды, басқалары жөндеу кезінде әлі кездескен жоқ, бірақ бәрі алда.

Мақаланың атауында жарияланғандай, келесі қателер теңшелген:

  1. 403 - Авторизация қатесі, кіруге тыйым салынды.
  2. 404 - Бет табылмады;
  3. 500 - Ішкі сервер қатесі;

404, 500 қатесін теңшеу

404 және 500 қателерін теңшеу үшін сұраныс өңдеушілерін жазу керек және олардың көріністерін әдіс ретінде жазу жеткілікті.

Біз шаблондарға теңшелген html файлдарымызды қосамыз, яғни:

  • error404.html
  • қате500.html

Осы сайтқа арналған көріністер жүзеге асырылатын модуль үй болып табылады. Бір модульдің үлгілерінде реттелетін қате үлгілерінің өздері орналастырылған.

Негізгі сайт модулінің urls.py файлында әдепкі өңдеушілерді қайта анықтаңыз:

  • өңдегіш404
  • сауда 500

Кодта ол келесідей көрінеді:

from home.views import e\_handler404, e\_handler500

handler404 = e\_handler404
handler500 = e\_handler500

home: модулінің views.py файлындағы көріністерді сипаттайық

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

403 қате теңшеу

403 қатесі рұқсаты жоқ пайдаланушы сайттың тек рұқсаты бар пайдаланушылар ғана кіруге рұқсат етілген бөлігіне кіруге әрекеттенгенде орын алады.

Django-да бұған пайдаланушының күйін тексеру және беттерге қауіпсіздік таңбалауышын, CSRF механизмін қосу арқылы қол жеткізіледі. Бұл қате пайдаланушы авторизацияланған болса да орын алуы мүмкін, бірақ CSRF таңбалауышын тексеруді қажет ететін әрекеттерді орындаса, және таңбалауыштың өзі жоғалған немесе дұрыс емес. Токеннің дұрыс жұмыс істеуі үшін пішіндердегі шаблонға арнайы тегті қосу керек:

{% csrf\_token %}

Токен оған ауыстырылады, бірақ оны үлгіге қосу жеткіліксіз. Үлгіні көрсетпес бұрын, үлгіге жіберілетін мәтінмәнге таңбалауыш қосылуы керек. Яғни,

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)

Енді теңшеудің өзіне жақынырақ. Csrf жұмыс істеуі үшін csrf модулі settings.py файлына қосылуы керек және осы қатені өңдейтін көрініс көрсетілген:

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

CSRF\_FAILURE\_VIEW = 'home.views.csrf\_failure'

Үлгілерде error403.html, қосыңыз, ал views.py файлында көрініс өңдеушісін жазыңыз.

def csrf\_failure(request, reason=""):
    context = RequestContext(request)
    response = render\_to\_response('error403.html', context)
    response.status\_code = 403
    return response

Django үшін Timeweb хостының VDS-сервері ұсынамын.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Владислав Меленчук
  • Мамыр 6, 2020, 9:42 Т.Ж.

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

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

Бізді әлеуметтік желілерде бақылаңыз