5. Контакты

Модуль для добавление контактной информации.

../_images/contact.png ../_images/contact_fields.png ../_images/contact_soc.png

5.1. Template tags

Подключение тега. Если не указать шаблон, то будет взят по умолчанию. Если не указан name будут выбраны все записи контактов.

{% load contact_tags %}

{% contact %}

Изменение шаблона

{% contact name='Контакты' template='base/tags/contact/contact_block_tag.html' %}

Шаблон для вывода полей контактов и соц. сетей.

<p>{{ contact.name }}</p>
'''Поля контактов'''
{% for field in contact.get_contact_fields %}
    <p>
        {% if field.icon_ui %}
                '''Иконка'''
            <span class="{{ field.icon_ui }}"></span>
        {% elif field.icon %}
                '''Загруженая иконка'''
            <img src="{{ field.icon.image.url }}">
        {% endif %}
            '''Поле 1'''
        {{ field.text|safe }}
            '''Поле 2'''
        {{ field.text_two|safe }}
    </p>
{% endfor %}
'''Соц. ссылки'''
{% for link_soc in contact.get_contact_socnet %}
    <p>
        <a href="{{ link_soc.get_link_contact_soc }}">
            {% if link_soc.link.icon_ui %}
                    '''Иконка'''
                <span class="{{ link_soc.link.icon_ui }}"></span>
            {% elif link_soc.link.icon %}
                    '''Загруженая иконка'''
                <img src="{{ link_soc.link.icon.image.url }}">
            {% else %}
                   ''' Название, если нет иконок'''
                {{ link_soc.link }}
            {% endif %}
        </a>
    </p>
{% endfor %}

5.1.1. for_contact

Вывод полей контактов и соц. сетей.

{% for_contact name='Footer' as contact %}
<p>{{ contact.name }}</p>
    '''Поля контактов'''
{% for field in contact.get_contact_fields %}
    <p>
        {% if field.icon_ui %}
                '''Иконка'''
            <span class="{{ field.icon_ui }}"></span>
        {% elif field.icon %}
                '''Загруженая иконка'''
            <img src="{{ field.icon.image.url }}">
        {% endif %}
            '''Поле 1'''
        {{ field.text|safe }}
            '''Поле 2'''
        {{ field.text_two|safe }}
    </p>
{% endfor %}
'''Соц. ссылки'''
{% for link_soc in contact.get_contact_socnet %}
    <a href="{{ link_soc.get_link_contact_soc }}">
        {% if link_soc.link.icon_ui %}
            <span class="{{ link_soc.link.icon_ui }}"></span>
        {% elif link_soc.link.icon %}
            <img src="{{ link_soc.link.icon.image.url }}">
        {% else %}
            {{ link_soc.link }}
        {% endif %}
    </a>
{% endfor %}

5.1.2. Генерация формы обратной связи:

В теге {% gen_form %} укажите поля которые хоите рендерить. Если не указвать поля, отредерятся все.

Для редиректа после отправки формы вставьте скрытое поле <input name=»next» hidden value=»адрес редиректа»>

Для защиты от спама используйте поле <input name=»honeypot» hidden value=»«> Форма включает поле «honeypot». Это ловушка: если в это поле будут введены какие-либо данные, форма будет считаться спамом (спаммеры часто автоматически заполняют все поля, пытаясь сделать правильные представления).

 <form action="{% url 'contact:feedback_gen' %}" method="post">
     {% csrf_token %}
     {% gen_form "full_name" "phone" as form %}
     {{ form }}
     <input name="next" hidden value="{{request.path}}">
     <input name="honeypot" hidden value="">
     <input type="submit" name="" value="Submit" />
</form>

5.2. Поля

5.2.1. Поля модели контактов

name (max_length=100):
 Название
description (max_length=5000):
 Описание
map = (max_length=10000):
 Карта
slug (max_length=100, unique=True):
 URL

5.2.2. Поля контактов

text (max_length=1000):
 Поле 1
text_two (max_length=1000):
 Поле 2
icon_ui (max_length=500):
 Класс иконки
icon (upload_to=»icon/»):
 Иконка
contact ForeignKey:
 Связь с моделью Контакты

5.2.3. Поля соц. сети контактов

contact_soc (ForeignKey):
 Связь с моделью Контакты
your_id (max_length=100):
 Ваша ссылка
link (ForeignKey):
 Связь с моделью Соц. сеть

5.2.4. Поля формы обратной связи

full_name = CharField(max_length=100):
 ФИО
email = EmailField(max_length=150):
 Почта
phone = CharField(max_length=14):
 Телефон
subject = CharField(max_length=150):
 Тема
message = TextField(max_length=1000):
 Сообщение
date = DateTimeField(auto_now_add=True):
 Дата