Использование *args в параметрах url в django
У меня есть веб-страница на сайте, которая показывает список тем наборов Lego. Каждая тема может иметь подтемы, и эти подтемы также могут иметь подтемы.
На изображении ниже каждый уровень отступа представляет, какие темы являются подтемами других тем.
Например, на моей странице пользователь может пройти по следующему пути:
- http://127.0.0.1:8000/themes (показывает все родительские темы)
- http://127.0.0.1:8000/themes/train (показывает все подтемы поезда)
- http://127.0.0.1:8000/themes/train/9V (показывает все подтемы поезда/9V)
- http://127.0.0.1:8000/themes/train/9V/My%20Own%20Train (нет подтем)
По моему мнению, я бы использовал *theme
для обработки любого количества подтем
url path
http://127.0.0.1:8000/theme/train/9V/
views.py
def theme(request, *theme):
#theme = ('train', '9V')
theme_path = "".join([theme + "/" for theme in themes])
#theme = 'train/9V/'
theme_items = db.get_theme_items(theme_path)
sub_themes = db.get_sub_themes(theme_path)
context = {
"parent_theme":theme[0],
"theme_items":theme_items,
"sub_themes":sub_themes,
}
return render(request, "App/theme.html", context=context)
urls.py
urlpatterns = [
...
path('theme/<str:theme_path>', views.theme, name="theme"),
...
]
theme.html
sub_theme.0
= название подтемы, например, '9V'
sub_theme.1
= url изображения
header
= родительская тема подтемы, например, 'поезд'
{% for sub_theme in sub_themes %}
<div class="theme-container">
<p><a href="{% url 'theme' parent_theme %}/{{sub_theme.0}}">{{sub_theme.0}}</a></p>
<img src="{{sub_theme.1}}" alt="{{sub_theme.0}}_url">
</div>
{% endfor %}
Как я могу передать несколько параметров в url, которые могут быть обработаны моим представлением?