diff --git a/src/dokumentor/urls.py b/src/dokumentor/urls.py index fd4f753..f7c1e56 100644 --- a/src/dokumentor/urls.py +++ b/src/dokumentor/urls.py @@ -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), + ] diff --git a/src/pages/sitemaps.py b/src/pages/sitemaps.py new file mode 100644 index 0000000..7d24d5c --- /dev/null +++ b/src/pages/sitemaps.py @@ -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") diff --git a/src/pages/views.py b/src/pages/views.py index 7d1a94b..7348212 100644 --- a/src/pages/views.py +++ b/src/pages/views.py @@ -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) diff --git a/templates/base_errors.html b/templates/base_errors.html new file mode 100644 index 0000000..1a09ebf --- /dev/null +++ b/templates/base_errors.html @@ -0,0 +1,122 @@ +{# spaceless #} +{% load static my_tags %} + + + + + {% block title %}{% endblock %} | Документор + + + + + + + +
+ +
+
+ + +
+
+

{% block code %}{% endblock %}

+
+ +
+ {% block short_text %}{% endblock %} +
+ +
+ {% block help %}{% endblock %} +
+
+ + + +
+ +
+ + {% block footer %} + + + {% endblock %} + +
+ + + + + + + + + +{# endspaceless #} diff --git a/templates/errors/400.html b/templates/errors/400.html new file mode 100644 index 0000000..e879b8e --- /dev/null +++ b/templates/errors/400.html @@ -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 %} +

+ Произошла ошибка, ваш браузер отправил нашему серверу неправильный + запрос. +

+

+ Попробуйте очистить кеш браузера, удалить куки, проверьте настройки + антивируса или брандмауэра и перезагрузите страницу. +

+{% endblock %} diff --git a/templates/errors/403.html b/templates/errors/403.html new file mode 100644 index 0000000..7e39184 --- /dev/null +++ b/templates/errors/403.html @@ -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 %} + diff --git a/templates/errors/404.html b/templates/errors/404.html new file mode 100644 index 0000000..48a9c46 --- /dev/null +++ b/templates/errors/404.html @@ -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 %} diff --git a/templates/errors/500.html b/templates/errors/500.html new file mode 100644 index 0000000..262190c --- /dev/null +++ b/templates/errors/500.html @@ -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 %} + +

+ Произошла внутренняя ошибка сервера, мы в курсе и уже работаем + над этой проблемой. +

+ +

+ Приносим свои извинения за предоставленные неудобства, пожалуйста, + попробуйте зайти на страницу позже. +

+ +{% endblock %} + +{% block navigation %}{% endblock %} diff --git a/templates/robots.txt b/templates/robots.txt index 1347d8e..df32fdc 100644 --- a/templates/robots.txt +++ b/templates/robots.txt @@ -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