Django - Как я могу отобразить шаблон, который я использую везде на моей веб-странице? - PullRequest
1 голос
/ 25 июня 2011

Я использую Django 1.2.4. У меня есть шаблон для входа в файл registration / login.html (действие django.contrib.auth.views.login), и я хочу включить его на каждой странице. Я создал блок в своем base.html, как и для каждого шаблона. Дело в том, что браузер не распознает этот блок входа в систему, и я думаю, что это потому, что я отображаю только шаблон для каждого представления, но не отображаю этот шаблон входа.

Вот моя структура папок:

/templates/
    base.html
    /myapp/
        object_list.html
        ...
    /registration/
        login.html

... а вот и мой login.html:

{% extends "base.html" %}
{% block mylogin %}
<div class="horizontal">
    {% if form.errors %}
        <p>Your username and password didn't match. Please try again.</p>
    {% endif %}
    <form action="{% url django.contrib.auth.views.login %}" method="post">
        {% csrf_token %}
        <div class="login_box">
            <div class="login_text">{{ form.username.label_tag }}</div><div class="login_input">{{ form.username }}</div>
            <div class="password_text">{{ form.password.label_tag }}</div><div class="password_input">{{ form.password }}</div>
            <input id="button_login" type="submit" value="" />
        </div>
    </form>
</div>
{% endblock %}

... и в моем base.html у меня есть:

<div id="some_div">
    {% block mylogin %} {% endblock %}
</div>

У меня есть basestyle.css, включенный в base.html, и другие шаблоны тоже наследуются правильно ... похоже, проблема с блоком ...

Итак ... как я могу сделать этот шаблон для каждого представления?

Спасибо

Ответы [ 2 ]

3 голосов
/ 25 июня 2011

Я думаю, вы ищете тег include .Таким образом, вы можете включить ваш html-код для входа в ваш base.html:

{% include "/registration/login.html" %}
0 голосов
/ 05 июля 2011

Что мне действительно нужно, так это создать templatetag в templatetags / mytags.py, где я определяю функцию get_login, которая выглядит следующим образом:

@register.inclusion_tag('registration/login.html', takes_context=True)
def get_login(context):
    ...
    return {'formLogin':  mark_safe(AuthenticationForm())}

... и в base.html:

{% load mytags  %}{% get_login  %}

Проблема теперь в том, что шаблон (registration / login.html) не распознает '{{formLogin.username}}', '{{formLogin.password}}' и т. Д.

Чего мне не хватает?

Обновление 1:

mark_safe возвращает экземпляр django.utils.safestring.SafeString, а не форму. Используйте (AuthenticationForm () вместо mark_safe (AuthenticationForm ()), и это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...