Альтернатива жесткому кодированию urlpatterns в django

Я делаю сайт на django, на главной странице которого отображаются ссылки на домены... при нажатии на каждый домен появляются ссылки на соответствующие темы, а при нажатии на каждую тему появляются ссылки на соответствующие подтемы...

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

Как сделать так, чтобы на главной странице я извлекал список доменов... отображал их... и при нажатии на них извлекал список тем под ними и отображал их по новой ссылке...

Вы можете включать параметры в свои пути. Действительно, например:

urlpatterns = [
    path('<str:domain>/<str:topic>/<str:subtopic>/', some_view)
]

и определите ваше представление как:

def some_view(request, domain, topic, subtopic):
    # …

Если вы затем посетите /science/physics/quantum/, он вызовет some_view с domain, установленным на 'science', topic установленным на 'physics' и subtopic установленным на 'quantum'.

Рекомендуемый паттерн для моделей Django - это построение "толстых" моделей. В вашем случае я бы добавил методы в ваши модели, которые возвращают путь. Таким образом вы также сможете легко протестировать генерацию url.

Идея:

class Topic:
   # ... 

   def get_absolute_url(self):
      return reverse( ... )

   def get_other_url(self):
      return reverse( ... )
Вернуться на верх