Шаблон Satchmo form.username не выскакивает - PullRequest
1 голос
/ 15 марта 2012

registration / login.html отредактировано

{% load i18n %}
    <div id="Login">
{% if form.non_field_errors %}
    <p class="error">
        {% for err in form.non_field_errors %}{{ err }}
            {% if not forloop.last %}<br/>{% endif %}
        {% endfor %}
    </p>
{% endif %}

<form method="post" action=".">{% csrf_token %}
<table>
    <tr><td><label for="id_username">{% trans 'USERNAME' %}:</label></td><td>{{ form.username }}</td></tr>
    {% if form.username.errors %}<tr><td class="error" colspan="2">***{{     form.username.errors|join:", " }}</td></tr>{% endif %}
    <tr><td><label for="id_password">{% trans 'PASSWORD' %}:</label></td><td>{{ form.password }}</td></tr>
    {% if form.password.errors %}<tr><td class="error" colspan="2">***{{     form.password.errors|join:", " }}</td></tr>{% endif %}
</table>

<input type="submit" value="{% trans 'sign in' %}" />
{% url registration_register as registration_register %}
{% if registration_register %}
    <span><a href="{% url registration_register %}">{% trans "register" %}</a></span>
{% endif %}
<input type="hidden" name="next"
{% if next %}
    value={{ next }} />
{% else %}
     {% url satchmo_account_info as accounturl %}
     {% if accounturl %} value="{% url satchmo_account_info %}" /> {% endif %}
{% endif %}
</form>

{% comment %} We jump through hoops with the urls so it doesn't bomb with django's built in unit tests.{% endcomment %}
{% url auth_password_reset as auth_password_reset %}
{% if auth_password_reset %}
    <p>{% trans "If you do not remember your password, please" %} 
        <a href="{% url auth_password_reset %}">{% trans "click here</a> to have it reset." %}</p>
{% endif %}
</div>

Почему не отображаются поля ввода form.username и form.password?Мне пришлось удалить тег блока {% extends shop / base.html%}.Это привело к тому, что поле ввода исчезло?

То, что я сделал, было удалено {% block content%} {% endblock%} и использовано {% include "registration / login.html"%} в базе.HTML шаблон.Я хотел, чтобы раздел входа отображался в верхнем левом углу вместо того, чтобы нажимать кнопку «Вход» для поля входа, расположенного в {% block content%}.

registration / login.html оригинальный файл

{% extends "shop/base.html" %}
{% load i18n %}

{% block navbar %}
   <li class="first"><a href="{{ shop_base }}/">{% trans "Home" %}</a></li>
{% endblock %}

{% block content %}

{% if form.non_field_errors %}
<p class="error">{% for err in form.non_field_errors %}{{ err }}{% if not forloop.last %}<br/>{% endif %}
{% endfor %}</p>
{% endif %}

<form method="post" action=".">{% csrf_token %}
<table>
<tr><td><label for="id_username">{% trans 'Email address' %}:</label></td><td>{{ form.username }}</td></tr>
{% if form.username.errors %}<tr><td class="error" colspan="2">***{{ form.username.errors|join:", " }}</td></tr>{% endif %}
<tr><td><label for="id_password">{% trans 'Password' %}:</label></td><td>{{ form.password }}</td></tr>
{% if form.password.errors %}<tr><td class="error" colspan="2">***{{ form.password.errors|join:", " }}</td></tr>{% endif %}
</table>

<input type="submit" value="{% trans 'Login' %}" />
<input type="hidden" name="next"
{% if next %}
    value={{ next }} />
{% else %}
     {% url satchmo_account_info as accounturl %}
     {% if accounturl %} value="{% url satchmo_account_info %}" /> {% endif %}
{% endif %}
</form>
{% comment %} We jump through hoops with the urls so it doesn't bomb with django's built in unit tests.{% endcomment %}
{% url registration_register as registration_register %}
{% url auth_password_reset as auth_password_reset %}
{% if registration_register %}
    <p>{% trans "If you do not have an account, please" %} <a href="{% url registration_register %}">{% trans "click here" %}</a>.</p>
{% endif %}
{% if auth_password_reset %}
    <p>{% trans "If you do not remember your password, please" %} <a href="{% url auth_password_reset %}">{% trans "click here</a> to have it reset." %}</p>
{% endif %}
{% endblock %}

shop / base.html

 <div id="sidebar-primary">{# rightnav #}
                {% block sidebar-primary %}
                <h3>{% trans "Quick Links" %}</h3>
                {% url satchmo_product_recently_added as recenturl %}
                {% if recenturl %}<a href="{{ recenturl }}">{% trans "Recently Added" %}</a>{% endif %}
                {% url satchmo_product_best_selling as popularurl %}
                {% if popularurl %}<br/><a href="{{ popularurl }}">{% trans "Best Sellers" %}</a><br/>{% endif %}
        {% url satchmo_category_index as category_index %}
        {% if category_index %} <a href="{{ category_index }}">{% trans "Category Index" %}</a><br /> {% endif %}
        {% url satchmo_quick_order as quick_order %}
        {% if quick_order %}<a href="{{ quick_order }}">{% trans "Quick Order" %}</a> {% endif %}
                {% plugin_point "sidebar_links" %}

            <h3>{% trans "Account Information" %}</h3>
            {% if user.is_staff %}
                <a href="{% url admin:index %}" target="blank">{% trans "Admin" %}</a><br/>
                {% endif %}
            {% if user.is_authenticated %}
                {% url satchmo_account_info as accounturl %}
        {% if accounturl %}<a href="{{ accounturl }}" target="blank">{% trans "Account Details" %}</a><br/>{% endif %}
        <a href="{{ logout_url }}?next={{request.path}}">{% trans "Log out" %}</a><br/>
            {% else %}
 <!-- I REMOVE REPLACED THE LINK BELOW WITH {% include "registration/login.html" %} -->
        <a href="{{ login_url }}?next={{request.path}}">{% trans "Log in" %}</a><br/>
            {% endif %}

                {% url satchmo_cart as carturl %}
            {% if carturl %}<a href="{{ carturl }}">{% trans "Cart" %}</a>{% endif %}

            {% if not cart.is_empty %}
            ({{ cart_count|normalize_decimal }} - {% if sale %}{{ cart|discount_cart_total:sale|currency }}{% else %}{{cart.total|currency}}{% endif%}) <br/>
            {% url satchmo_checkout-step1 as checkouturl %}
            {% if checkouturl %}<a href="{{ checkouturl }}">{% trans "Check out" %}</a>{% endif %}
            {% endif %}

                {% plugin_point "shop_sidebar_actions" %}

                {% url satchmo_contact as contact_url %}
            {% if contact_url %}<p><a href="{{ contact_url }}">{% trans "Contact Us" %}</a></p>{% endif %}

                {% satchmo_language_selection_form %}

                {% block sidebar-primary-bottom %}
                {% plugin_point "shop_sidebar_primary" %}
                {% endblock %}
                {% endblock sidebar-primary %}
        </div>

Я попробовал {% include "registration/copy_login.html" %} и немного изменил содержимое.Я также использовал <form action="{% url auth_login %}.Когда я нажимаю «отправить» с заполненным логином / паролем, я перехожу на /accounts/login/, где мне снова нужно ввести данные для входа.

Это мой copy_login.html:

 # copy_login.html
 ...
 <tr><td><label for="id_username">{% trans "Username" %}</label></td><td><input type="text" name="id_username" id="id_username" /></td></tr>
 <tr><td><label for="id_password">{% trans "Password" %}</label></td><td><input type="text" name="id_password" id="id_password" /></td></tr>
 ...

Ответы [ 2 ]

0 голосов
/ 19 апреля 2012

Ответ только для кода пользователя

Первая проблема заключается в том, что вы, вероятно, пытались включить измененный сокращенный регистрационный файл / login.html в основной шаблон, но скрыли его в комментарии:

<!-- I REMOVE REPLACED THE LINK BELOW WITH {% include "registration/login.html" %} -->

Раскомментируйте, чтобы увидеть результат.

Оригинальный шаблон registration / login.html используется представлением accounts.views.emaillogin и используется URL /accounts/login/, который перенаправляется, если вы переходите на любую страницу, требующую входа в систему. Вы сломали его, но в этом случае вы хотите отобразить большую форму в центре страницы, а не только маленькую в углу. Вы также не хотите отображать там ошибки, связанные с другими формами на странице. Не так ли? Не нарушайте назначение оригинального шаблона.

Общий ответ

Я рекомендую сначала скопировать и вставить важные части шаблона входа в систему registration/login.html в ваш меньший шаблон, который вы где-то включили. Сделайте так, чтобы вы не включали сообщения об ошибках и т. Д. В маленький шаблон, только в минимальный. Если вход не выполняется, будет отображаться обычная большая страница входа с сообщениями. Вам нужно изменить action="." на

<form method="post" action="{% url auth_login %}?next={{ request.path }}">

Примечание. Имя auth_login определяется в satchmo_store / accounts / urls.py следующим образом:

(r'^login/$', 'emaillogin', {'template_name': 'registration/login.html'}, 'auth_login'),

Наконец, вы можете сделать его СУХИМ (не повторять себя), но это не стоит ваших усилий, в то время как шаблоны будут сильно отличаться.

[Отредактировано] 1) Включено небольшое исправление из комментариев. 2) Изменено, чтобы быть проще для других.

0 голосов
/ 15 марта 2012

Если ваш шаблон расширяет другой шаблон, то должен отображаться только код, который он содержит в {% block%} ... {% endblock%}.

Скажите, у меня есть эта база.html template:

<html>
    <body>
        {% block body %}
        {% endblock %}
    </body>
</html>

Затем в таком шаблоне login.html:

{% extends 'base.html' %}

this won't show up because it's not in a block

{% block body %}
    this will "show up"
{% endblock %}

Подробнее о наследовании шаблонов

...