Files
2018-lpon-site/lpon_site/lpon_site/urls.py
T

51 lines
2.2 KiB
Python

"""
URL configuration for lpon_site project.
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/6.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include, re_path
from django.conf import settings
from django.conf.urls.static import static
from django.views.static import serve
from frontend import views
urlpatterns = [
# Раздача статических файлов из корня каталога PUBLIC_DIR (favicon.ico, favicon.png, favicon.svg, robots.txt и др.)
# Роут с точкой в имени файла строго отделяет файлы от слагов хабов/статей.
re_path(
r'^(?P<path>[-a-zA-Z0-9_]+\.[a-zA-Z0-9]+)$',
serve,
{'document_root': settings.PUBLIC_DIR},
name='public_root_files',
),
# Админ-сайт с переименованными приложениями (переопределен в frontend/apps.py)
path(settings.ADMIN_URL, admin.site.urls),
re_path(r'^$', views.index),
re_path(r'^catalog/$', views.catalog),
re_path(r'^info/?$', views.info_articles_list, name='info_articles_list'),
re_path(r'^info/(?P<slug>[-a-zA-Z0-9_]+)/?$', views.info_article_detail, name='info_article_detail'),
# Универсальный роут для хабов и страниц из корня (должен идти ПОСЛЕДНИМ!)
re_path(r'^(?P<slug>[-a-zA-Z0-9_]+)/?$', views.hub_detail, name='hub_detail'),
]
# Сервировать медиа-файлы в разработке (в production использовать nginx/Apache)
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)