Как вы относитесь к иерархическим URL-адресам в Django? Любые лучшие практики для этого? Например. Если бы у меня был URL-адрес, например, /blog/category1/category2/myblogentry
(с использованием, например, django-mptt), выполняете ли вы проверку в urls.py
или передаете весь путь к просмотру, пусть он проверяет каждую часть, если она является допустимой категорией и т. Д.? Не звучит так жестко, но просто любопытно, может ли кто-нибудь порекомендовать некоторые лучшие практики или показать хорошие (общие) решения?Django: Иерархические адреса
ответ
Боюсь, что на ваш вопрос нет единого ответа. Проблема в том, что там указано, как выглядит иерархия на уровне URL-пакетов, с ней слишком много логики.
Я нашел полезным для пользователей декораторов. Например, в вашем случае вы можете написать декоратор, который проверяет здравомыслие категорий и передает только окончательную категорию вниз. Что-то, как декоратор, который может взять функцию с этой подписью:
f(request, cat1, catN..., slug)
Проверка, что каждая категория действительно родитель следующего, и проходя вниз мнению, окончательную проверила категорию.
@validate_category_hierarchy
def post_in_category(request, category, slug):
Если вам действительно нужно, чтобы быть расширяемой, декоратор может сделать немного самоанализа и сделать некоторые предположения (например, насколько глубоко может дерево идти, каковы остальные параметры, такие как, и т.д.).
Затем все, что вам нужно сделать, это написать URL-адрес confs тщательно, чтобы декоратор получил параметры в хорошей форме.
это http://djangosnippets.org/snippets/362/ также полезно. Это позволяет решить, проверяет ли URL-адрес без декораторов.