Проверьте наличие определенного url и выведите jinja2 / html

Как можно проверить наличие определенного URL в jinja2 в html файлах и затем отобразить различные html файлы в зависимости от того, на каком URL я сейчас нахожусь?

Например,

# if {{ request.path == /siteID/ }}
  {% include "file1.html" %}

# if {{ request.path == /siteID/abcde/ }}
  {% include "file2.html" %}
 

Текущая логика у меня есть, которая, как мне кажется, не очень хорошая:

<!-- ..... bunch of html lines .... -->
{% if request.path|length > 8 and request.path.startswith('/siteID/') and request.path[8:].strip('/').split('/')|length == 1 %}
  {% include "file2.html" %}
{% else %}
  {% include "file1.html" %}
{% endif %}
<!-- ..... bunch of html lines .... -->

Также как мне масштабировать это, если в будущем я захочу сделать что-то вроде:

# if {{ request.path == /siteID/abcde/uvwxyz }}
  {% include "file3.html" %}

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

def the_view(request):
    if request.path == '/siteID/abcde/':
        template = 'file1.html'
    elif request.path == '/siteID/fgh/':
        template = 'file2.html'
    else:
        template = 'file_default.html'
        
    return render(request, 'base.html', {'template_to_include': template})

Затем в вашем шаблоне base.html поместите куда-нибудь эту динамическую строку импорта:

{% include template_to_include %}
Вернуться на верх