Чи може шаблон django дізнатися свою назву url або може базовий шаблон знати, який шаблон розширює його?

У моєму URLConf, у мене є URL-адреси акуратно названий, так що я можу зробити зворотний пошук і зберегти все DRY.

Усі мої шаблони поширюють універсальний шаблон з назвою base.html . У base.html , серед великої кількості фреймів HTML, відображається форма входу.

У мене також є особливий перегляд, який використовує наданий у Django перегляд auth_views.login , який відображає мій власний шаблон login.html . Цей шаблон, як і всі інші, розширює шаблон base.html.

У подібних випадках мені б хотілося, щоб шаблон base.html не відображав свою форму входу (шаблон login.html вже відображається у формі входу). Для цього потрібно, щоб base.html знав, що він використовується для розширення login.html , або знає, що назва URL, яка призвела до бази. html, що розширюється, має назву 'myapp-login' .

Чи можете ви запропонувати спосіб зробити це? Я маю намір написати власний вигляд, який називатиме auth_views.login додатковим контекстом, який включає suppress_header_login_form var. Виходячи з цього var, шаблон base.html може припинити форму входу. Однак, я намагаюся побачити, чи є кращий спосіб досягти цього.

1
Дуже близько. Однак моя проблема полягає в тому, що цей шаблон називається з TemplateView. У такому випадку запит не передається шаблону, і не існує способу отримати URL через нього.
додано Автор Krystian Cybulski, джерело
Можливо, це питання може допомогти вам: шаблон "> stackoverflow.com/questions/2882490/…
додано Автор Razvi, джерело

1 Відповіді

Ви можете керувати цим завдяки успадкуванню шаблонів і блокам.

Ваш base.html визначає блок, який називається login , який оточує HTML для входу, а ваш login.html перекриває цей блок із порожнім версія:

base.html:

{% block login %}
    ... login form here ...
{% endblock %}

{% block main %}
{% endblock %}

login.html:

{% extends "base.html" %}

{% block login %}
{% endblock %}

{% block main %}
   ... real login form here ...
{% endblock %}
4
додано
Не думали про це. Хороша пропозиція. Вирішує проблему. Я залишу це відкрито для трохи більше, тому що мені цікаво, якщо є спосіб, щоб насправді перевірити, що я згадав в оригінальній посаді.
додано Автор Krystian Cybulski, джерело
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;