Size: a a a

2020 December 06

u

ultra + noise in PiterPy Meetup
Чтобы сэкономить чужое время
источник
2020 December 09

YO

Yaroslav Ogloblin in PiterPy Meetup
Доброе время суток.
Подскажите, пожалуйста, как можно в шаблоне организовать условную подгрузку библиотеки тегов в зависимости от версии Django в которой этот шаблон работает?
Если конкретнее, то нужно чтобы шаблон работал на 1, 2 и 3 ветках Django, но в шаблоне требуется библиотека тегов из админки (шаблон используется именно там), до 3 ветки нужно было прописывать {% load admin_static %}, а с 3 ветки так нельзя, падает ошибка, надо {% load static %}.
Как лучше это в одном шаблоне сделать?
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
И ещё один вопрос, в последних версиях Python, "Schwartzian Transform" для сортировки списков с элементами сложной структуры ещё актуальна или никакого выигрыша по сравнению с сортировкой по ключу, которая появилась в 2.4 нет?
источник

ED

Eugene Denisov in PiterPy Meetup
Yaroslav Ogloblin
И ещё один вопрос, в последних версиях Python, "Schwartzian Transform" для сортировки списков с элементами сложной структуры ещё актуальна или никакого выигрыша по сравнению с сортировкой по ключу, которая появилась в 2.4 нет?
Сортировка по ключу — это то же самое, но не руками и слегка оптимальнее.
источник

ED

Eugene Denisov in PiterPy Meetup
Yaroslav Ogloblin
Доброе время суток.
Подскажите, пожалуйста, как можно в шаблоне организовать условную подгрузку библиотеки тегов в зависимости от версии Django в которой этот шаблон работает?
Если конкретнее, то нужно чтобы шаблон работал на 1, 2 и 3 ветках Django, но в шаблоне требуется библиотека тегов из админки (шаблон используется именно там), до 3 ветки нужно было прописывать {% load admin_static %}, а с 3 ветки так нельзя, падает ошибка, надо {% load static %}.
Как лучше это в одном шаблоне сделать?
А юзкейс можно? А то не ясно, зачем вообще может понадобиться использовать один и тот же шаблон в разных версиях джанги. Я бы просто сделал разные версии шаблона для разных версий джанги.
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
Eugene Denisov
Сортировка по ключу — это то же самое, но не руками и слегка оптимальнее.
Ок, спасибо.
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
Eugene Denisov
А юзкейс можно? А то не ясно, зачем вообще может понадобиться использовать один и тот же шаблон в разных версиях джанги. Я бы просто сделал разные версии шаблона для разных версий джанги.
Батарейку хочу допилить чтобы она работала и на старых ветках и на третьей.
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
и там отличий почти нет, если делать два разных шаблона, то никакого DRY
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
Проект перевожу с Django 1.8 на 3.1, там она используется, поддержка 2 ветки там уже реализована, а 3-ей пока нет.
источник

RC

Ruslan Chekalov in PiterPy Meetup
Yaroslav Ogloblin
и там отличий почти нет, если делать два разных шаблона, то никакого DRY
))))))
источник

ED

Eugene Denisov in PiterPy Meetup
Yaroslav Ogloblin
и там отличий почти нет, если делать два разных шаблона, то никакого DRY
Тогда ту часть, что одинаковая, вынеси в родительский шаблон.
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
Eugene Denisov
Тогда ту часть, что одинаковая, вынеси в родительский шаблон.
ну там в том то и дело что тогда конечный шаблон только и будет что состоять из тега {% load admin_static %} один, а второй {% load static %} всё остальное вроде совпадает, по крайней мере пока других отличий не нашёл.
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
и таких шаблонов штук 7 в этой батарейке
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
Eugene Denisov
Тогда ту часть, что одинаковая, вынеси в родительский шаблон.
ну а других способов описать вызов разных библиотек в шаблоне нет? чтобы не увеличивать количество шаблонов в 3 раза (два с разными подгрузками и один исходный базовый)
источник

DB

Dima Boger in PiterPy Meetup
Yaroslav Ogloblin
ну а других способов описать вызов разных библиотек в шаблоне нет? чтобы не увеличивать количество шаблонов в 3 раза (два с разными подгрузками и один исходный базовый)
можешь описать свой темплейт-тег, в котором в зависимости от версии делать логику load'а
источник

DB

Dima Boger in PiterPy Meetup
Since the template language doesn’t provide exception handling, any exception raised from a template filter will be exposed as a server error. Thus, filter functions should avoid raising exceptions if there is a reasonable fallback value to return. In case of input that represents a clear bug in a template, raising an exception may still be better than silent failure which hides the bug.


Т.е. на уровне темплейтов обработку ошибок не решить, только на уровне логики темплейт-тегов или темплейт-процессоров
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
Dima Boger
Since the template language doesn’t provide exception handling, any exception raised from a template filter will be exposed as a server error. Thus, filter functions should avoid raising exceptions if there is a reasonable fallback value to return. In case of input that represents a clear bug in a template, raising an exception may still be better than silent failure which hides the bug.


Т.е. на уровне темплейтов обработку ошибок не решить, только на уровне логики темплейт-тегов или темплейт-процессоров
я знаю что импорты обычно через try except реализуются, но есть ещё вариант с if. В этой батарейке как раз так реализован импорт reverse в зависимости от версии Django
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
if django.VERSION[0] < 2:
   from django.core.urlresolvers import reverse
else:
   from django.urls import reverse
источник

YO

Yaroslav Ogloblin in PiterPy Meetup
такую конструкцию в шаблоне не стоит делать?
источник

DB

Dima Boger in PiterPy Meetup
Yaroslav Ogloblin
if django.VERSION[0] < 2:
   from django.core.urlresolvers import reverse
else:
   from django.urls import reverse
Концептуально такую логику можно накрутить: https://stackoverflow.com/questions/4256145/django-template-tag-to-display-django-version
источник