Джанго үлгісі оның атын анықтай алады ма, немесе базалық шаблон біледі, қандай үлгі оны кеңейтеді?

URLConf-ге менің кері URL-мекен-жайларым бар.

Барлық үлгілерім 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' деген атауы бар.

Сіз мұны қалай жүзеге асыра аласыз? suppress_header_login_form бар auth_views.login деп аталатын қосымша көзқараспен өзімнің пікірімді жазуды ойлаймын. Осыған сүйене отырып, base.html үлгісі кіру пішінін басады. Дегенмен, мен мұны жүзеге асырудың керемет жолын көруге тырысамын.

1
Өте жақын. Дегенмен, менің проблемам осы үлгіні TemplateView деп аталады. Мұндай жағдайда сұраныс үлгіге берілмейді және URL арқылы оны алудың ешқандай жолы жоқ.
қосылды автор Krystian Cybulski, көзі
Мүмкін, бұл мәселе сізге көмектесе алады: stackoverflow.com/questions/2882490/…
қосылды автор Razvi, көзі

1 жауаптар

Мұны үлгі мұраға және блоктармен басқара аласыз.

Сіздің base.html логині үшін HTML-ды орындайтын login деп аталатын блокты анықтайды және сіздің 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, көзі