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

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

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

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

...и вот мой логин.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, и другие шаблоны тоже наследуются правильно... кажется, проблема с блоком...

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

Спасибо


person juankysmith    schedule 25.06.2011    source источник


Ответы (2)



Что мне действительно нужно, так это создать 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()) и это работает!

person juankysmith    schedule 05.07.2011