Как отобразить древовидную структуру с гиперссылками в представлениях django

У меня есть в моей базе данных таблица с именем nodes, где у меня есть родительские дочерние отношения, и я использую

http://django-mptt.github.io/django-mptt/tutorial.html

для узлов

Теперь я могу отображать все узлы одинаково, и это не проблема.

Но я хочу, чтобы у меня была папка, подобная структуре, и если кто-то щелкнет parent folder, я перейду к следующему представлению, у которого будут только его дочерние элементы.

и URL станет

www.example.com/downloads/parentfolder

Затем, если пользователь нажмет на дочернюю папку1, он покажет ее дальнейшие дочерние элементы, и URL-адрес станет

www.example.com/downloads/parentfolder/childfolder

как я могу сделать такую ​​вещь

Я хочу сделать что-то вроде этого

Django MPTT - как выполнять запросы на основе сегментов URL

Но он не объяснил, как он это сделал.


person fdsgds    schedule 26.07.2013    source источник


Ответы (1)


Вы можете сделать это с помощью маршрутизации, как в приложении, в котором есть обычные модели django из urls.py, подобные этому.

#urls.py

urlpatterns = patterns('',

    url(r'^downloads/(?P<parent_id>\d+)/$', ParentView.as_view(), name='parents_list'),
    url(r'^downloads/(?P<parent_id>\d+)/(?P<child_id>\d+)/$', ChildView.as_view(),
                                    name='childs_list'),
)

Напишите соответствующие мнения, и все будет в порядке. Пожалуйста, имейте в виду, что я использовал представления на основе классов в приведенном выше примере URL. Просто напишите любой тип взглядов, с которым вы знакомы.

В первом представлении будет показан родительский список или список родителей из заданного родительского идентификатора в URL-адресе. Второе представление покажет дочерний элемент внутри родителя с учетом родительского и дочернего идентификаторов.

Редактировать

Похоже, ваше требование немного сложное, я нашел лучшее решение здесь Django-MPTT полный путь к дочерним страницам как сделать?

Надеюсь, это решит вашу проблему :)

person chhantyal    schedule 26.07.2013
comment
мне не нужен идентификатор в URL-адресе, я хочу иметь полное текстовое описание в URL-адресах. а что если у меня downloads/7/8/9/55 - person fdsgds; 26.07.2013
comment
В этом случае вы можете использовать слаги, см. этот docs.djangoproject.com /en/dev/ref/models/fields/#slugfield. - person chhantyal; 26.07.2013
comment
Обновлен ответ со ссылкой на решение. Надеюсь, поможет. - person chhantyal; 26.07.2013