Django: пути к шаблонам
Не осилил регулярное выражение для путей к шаблонам Django, поэтому написал несколько функций, облегчающих работу. Допустим, у нас такая структура каталогов:
Структура каталогов для шаблонов
/template
admin/
index.html
articles/
add.html
detail.html
list.html
news/
add.html
detail.html
list.html
desktop/
index.html
articles/
add.html
detail.html
list.html
news/
add.html
detail.html
list.html
urls.py
Есть много вариантов того, как написать urls.py, но я написал так:
Использование генератора для создания urlpatterns
from os.path import join
from django.conf.urls import include
from django.conf.urls import url
from django.views.generic import TemplateView
def template_url(folder, template):
return url(
'^' + template + '.html$',
TemplateView.as_view(template_name=(join(folder, template) + '.html'))
)
def urls_list(prefix, urls_list):
return [template_url(prefix, item) for item in urls_list]
admin = urls_list('admin', [
r'index.html',
r'articles/add',
r'articles/list',
r'articles/detail',
r'news/add',
r'news/list',
r'news/detail',
])
desktop = urls_list('admin', [
r'index.html',
r'articles/add',
r'articles/list',
r'articles/detail',
r'news/add',
r'news/list',
r'news/detail',
])
urlpatterns = admin + desktop
Данная простая конструкция заменяет огромные полотна такого вида:
Решение проблемы "в лоб"
from django.conf.urls import include
from django.conf.urls import url
from django.views.generic import TemplateView
admin = template_url('admin', [
url('^index.html$', TemplateView.as_view(template_name='admin/index.html')),
url('^articles/add.html$', TemplateView.as_view(template_name='admin/articles/add.html')),
url('^articles/list.html$', TemplateView.as_view(template_name='admin/articles/list.html')),
url('^articles/list.html$', TemplateView.as_view(template_name='admin/articles/list.html')),
url('^news/add.html$', TemplateView.as_view(template_name='admin/news/add.html')),
url('^news/list.html$', TemplateView.as_view(template_name='admin/news/list.html')),
url('^news/list.html$', TemplateView.as_view(template_name='admin/news/list.html')),
])
desktop = template_url('desktop', [
url('^index.html$', TemplateView.as_view(template_name='desktop/index.html')),
url('^articles/add.html$', TemplateView.as_view(template_name='desktop/articles/add.html')),
url('^articles/list.html$', TemplateView.as_view(template_name='desktop/articles/list.html')),
url('^articles/list.html$', TemplateView.as_view(template_name='desktop/articles/list.html')),
url('^news/add.html$', TemplateView.as_view(template_name='desktop/news/add.html')),
url('^news/list.html$', TemplateView.as_view(template_name='desktop/news/list.html')),
url('^news/list.html$', TemplateView.as_view(template_name='desktop/news/list.html')),
])
urlpatterns = admin + desktop
Подписаться на:
Комментарии к сообщению
(
Atom
)
Комментариев нет :
Отправить комментарий