Проверьте наличие определенного 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 %}