add error pages

prod
Dmitriy Shesterkin 9 years ago
parent de95a155aa
commit ee789e5dda
  1. 25
      src/dokumentor/urls.py
  2. 20
      src/pages/sitemaps.py
  3. 23
      src/pages/views.py
  4. 122
      templates/base_errors.html
  5. 22
      templates/errors/400.html
  6. 14
      templates/errors/403.html
  7. 13
      templates/errors/404.html
  8. 27
      templates/errors/500.html
  9. 6
      templates/robots.txt

@ -5,9 +5,11 @@ from django.conf.urls import include, url
import autocomplete_light
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.sitemaps.views import sitemap
from django.views.generic import RedirectView
from pages.views import robots
from pages.sitemaps import robots, StaticSitemap
from pages import views
admin.autodiscover()
autocomplete_light.autodiscover()
@ -16,6 +18,15 @@ admin.site.site_header = 'Документор'
admin.site.index_title = 'Документор'
admin.site.site_title = 'Документор'
sitemaps = {
'static': StaticSitemap,
}
handler400 = 'pages.views.bad_request'
handler403 = 'pages.views.permission_denied'
handler404 = 'pages.views.page_not_found'
handler500 = 'pages.views.server_error'
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
@ -32,9 +43,12 @@ urlpatterns = [
url(r'^user/', include('myauth.urls')),
url(r'^captcha/', include('captcha.urls')),
url(r'^robokassa/', include('robokassa.urls')),
url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps},
name='django.contrib.sitemaps.views.sitemap'),
url(r'^robots.txt$', robots),
url(r'^', include('cms.urls')),
]
if settings.DEBUG:
@ -42,3 +56,10 @@ if settings.DEBUG:
urlpatterns = [url(r'^__debug__/', include(debug_toolbar.urls))] + urlpatterns
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += [
url(r'^400/$', views.bad_request),
url(r'^403/$', views.permission_denied),
url(r'^404/$', views.page_not_found),
url(r'^500/$', views.server_error),
]

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from django.contrib.sitemaps import Sitemap
from django.core.urlresolvers import reverse
from django.shortcuts import render_to_response
class StaticSitemap(Sitemap):
priority = 0.5
changefreq = 'weekly'
def items(self):
return ['site_index']
def location(self, item):
return reverse(item)
def robots(request):
return render_to_response('robots.txt', content_type="text/plain")

@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from django.shortcuts import redirect, render_to_response
from django.shortcuts import redirect
from django.views import defaults
from cms.views import details
@ -12,5 +13,21 @@ def site_index(request):
return redirect('customer_profile_view')
def robots(request):
return render_to_response('robots.txt', content_type="text/plain")
def page_not_found(*args, **kwargs):
kwargs['template_name'] = 'errors/404.html'
return defaults.page_not_found(*args, **kwargs)
def server_error(*args, **kwargs):
kwargs['template_name'] = 'errors/500.html'
return defaults.server_error(*args, **kwargs)
def bad_request(*args, **kwargs):
kwargs['template_name'] = 'errors/400.html'
return defaults.bad_request(*args, **kwargs)
def permission_denied(*args, **kwargs):
kwargs['template_name'] = 'errors/403.html'
return defaults.permission_denied(*args, **kwargs)

@ -0,0 +1,122 @@
{# spaceless #}<!DOCTYPE html>
{% load static my_tags %}
<html>
<head>
<meta charset='utf-8'>
<title>{% block title %}{% endblock %} | Документор</title>
<meta name='description' content='{% block meta_title %}{% endblock %}'/>
<link rel="shortcut icon" href="{% static 'favicon.ico' %}" />
<link rel="stylesheet" href="{% static 'css/style.css' %}?ver={% file_version 'css/style.css' %}" />
<style>
html,
body {
height: 100%;
}
.wrapper {
position: relative;
min-height: 100%;
}
.content {
padding-bottom: 100px;
}
.footer {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 100px;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="content">
<div id="w1200">
<div id="header">
<div class="left">
<a href="/" id="site_logo">
<img class='left' src="{% static 'img/logo.png' %}" />
<div class="left logo-text">
<div class="logo-bigfont">Документор</div>
<div>Сервис, которому нравится создавать документы. И вам понравится!</div>
</div>
</a>
</div>
<div class='clear'></div>
</div>
<div class="error">
<div class="error__code container__item">
<h1>{% block code %}{% endblock %}</h1>
</div>
<div class="error__short-text container__item">
{% block short_text %}{% endblock %}
</div>
<div class="error__help container__item">
{% block help %}{% endblock %}
</div>
</div>
<div class="navigation">
{% block navigation %}
<a class="navigation__item" href="/">Перейти на главную страницу сайта</a>
{% endblock %}
</div>
</div>
</div>
{% block footer %}
<div id='footer' class="footer">
<div id="footer-content">
<div class="footer-text">Техподдержка Документора</div>
<a href='mailto:help@dokumentor.ru'>help@dokumentor.ru</a>
<a href="/" onclick="return show_req_avail_form('{% url 'callback-send-message' %}');">Обратная связь</a>
<a href="{% static 'dogovor.pdf' %}">Лицензионное соглашение</a>
<a href="{% static 'PD.pdf' %}">Политика в отношении персональных данных</a>
</div>
</div>
{% endblock %}
</div>
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter38822320 = new Ya.Metrika({
id:38822320,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
} catch(e) { }
});
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = "https://mc.yandex.ru/metrika/watch.js";
if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/38822320" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</body>
</html>{# endspaceless #}

@ -0,0 +1,22 @@
{% extends "base_errors.html" %}
{% block title %}Ошибка 400{% endblock %}
{% block meta_title %}Некорректный запрос - ошибка 400{% endblock %}
{% block code %}Ошибка 400{% endblock %}
{% block short_text %}
Наш сервер не понял ваш запрос
{% endblock %}
{% block help %}
<p>
Произошла ошибка, ваш браузер отправил нашему серверу неправильный
запрос.
</p>
<p>
Попробуйте очистить кеш браузера, удалить куки, проверьте настройки
антивируса или брандмауэра и перезагрузите страницу.
</p>
{% endblock %}

@ -0,0 +1,14 @@
{% extends "base_errors.html" %}
{% block title %}Ошибка 403{% endblock %}
{% block meta_title %}Доступ запрещён - ошибка 403{% endblock %}
{% block code %}Ошибка 403{% endblock %}
{% block short_text %}
К сожалению, у вас нет доступа к этой странице
{% endblock %}
{% block help %}{% endblock %}

@ -0,0 +1,13 @@
{% extends "base_errors.html" %}
{% block title %}Ошибка 404{% endblock %}
{% block meta_title %}Страница на найдена - ошибка 404{% endblock %}
{% block code %}Ошибка 404{% endblock %}
{% block short_text %}
Вы ищете страницу, которой не существует
{% endblock %}
{% block help %}{% endblock %}

@ -0,0 +1,27 @@
{% extends "base_errors.html" %}
{% block title %}Ошибка 500{% endblock %}
{% block meta_title %}Ошибка сервера - ошибка 500{% endblock %}
{% block code %}Ошибка 500{% endblock %}
{% block short_text %}
Упс! У нас что-то сломалось :(
{% endblock %}
{% block help %}
<p>
Произошла внутренняя ошибка сервера, мы в курсе и уже работаем
над этой проблемой.
</p>
<p>
Приносим свои извинения за предоставленные неудобства, пожалуйста,
попробуйте зайти на страницу позже.
</p>
{% endblock %}
{% block navigation %}{% endblock %}

@ -1,9 +1,5 @@
Host: dokumentor.ru
User-agent: *
Disallow: /admin/
User-agent: YandexBot
Disallow: /admin/
Sitemap: https://dokumentor.ru/sitemap.xml
Host: https://dokumentor.ru

Loading…
Cancel
Save