y
yareg21 травня 2017 р. 11:46

Контактная форма

Доброго времени суток!!Можно ли реализовать вашу контактную форму, как в статье, в оверлее на подобие такого: https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_login_form_modal Заранее спасибо!

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

11
Evgenii Legotckoi
  • 21 травня 2017 р. 12:27

День добрый.

Да. Такое можно реализовать. Самое простое - это посмотрите в сторону использования django-bootstrap3 . Это автоматически снимет кучу проблем с вёрсткой. Про подключение bootstrap к Django я писал в этой статье .

У меня на сайте используются модальные окна из bootstrap 3. Например, предварительный просмотр комментариев и вставка программного кода в комментарии. Посмотрите на ToolBar`е редактора комментариев. Конечно без анимации, но это можно настроить покрутив немного CSS.

Обычно код модального окна в Bootstrap выглядит следующим образом

<div class="modal">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h4 class="modal-title">Modal title</h4>
      </div>
      <div class="modal-body">
        <p>One fine body…</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

Чтобы показать окно, необходимо вызвать соответствующий javascript код. Нужно, чтобы код javascript код Bootstrap`а также был подключён. В статье этот момент имеется.

$('#myModal').modal('show') 

Обработку формы можно уже сделать также, как было в статье про контактную форму. Либо усложнить с помощью AJAX запросов.

    y
    • 21 травня 2017 р. 12:58

    У меня проблема в том, что я не могу сказать самому Django, чтобы тот шаблон, который описывается в статье, отобразился в этом модальном окне. Как сделать это?

      Evgenii Legotckoi
      • 21 травня 2017 р. 13:01

      Поместить код контактной формы внутрь модального диалога.

      <div class="modal-body">
             Поместить код контактной формы здесь
      </div>
        y
        • 21 травня 2017 р. 13:19

        Простите, конечно, что лезу с такими пустяками, просто хотеться познать Django по полной(пишу диплом на нем и новичок к тому же). При добавления кода прямо туда выдает просто что сообщение отправлено и все. Помогите пожалуйста чайнику, нигде просто решения найти не могу) Прикрепляю код своего модала и контактной формы

          y
          • 21 травня 2017 р. 13:20

          Вот второй

            Evgenii Legotckoi
            • 21 травня 2017 р. 13:39

            Хех... За написание диплома по полной Django не познаете, только на живом работающем проекте. Но это всё лирика. А теперь к делу.

            Вы в запросе-то в контекст передали контактную форму?

            context['contact_form'] = ContactForm()

            Если в контексте не будет контактной формы, то правильно, что показывает надпись Сообщение отправлено. Код в modal.html правильно поставили. Нужно только во вьюшке (представлении правильно написать). Смотрите в статье метод get у EContactsView.

              y
              • 21 травня 2017 р. 13:55

              Да, все прописано также, как и у вас

                y
                • 21 травня 2017 р. 14:04

                а шаблон прописанный в самой вьюхе влияет на это как-нибудь?

                  y
                  • 21 травня 2017 р. 14:24
                  class ContactsView(View):
                      template_name = 'tovar/contact.html'
                  
                      # В случае get запроса, мы будем отправлять просто страницу с контактной формой
                      def get(self, request, *args, **kwargs):
                          context = {}
                          context.update(csrf(request))  # Обязательно добавьте в шаблон защитный токен
                          context['contact_form'] = ContactForm()
                  
                          return render_to_response(template_name=self.template_name, context=context)
                  
                      def post(self, request, *args, **kwargs):
                          context = {}
                  
                          form = ContactForm(request.POST)
                  
                          # Если не выполнить проверку на правильность ввода данных,
                          # то не сможем забрать эти данные из формы... хотя что здесь проверять?
                          if form.is_valid():
                              email_subject = 'Сообщение через контактную форму '
                              email_body = "С сайта отправлено новое сообщение\n\n" \
                                           "Имя отправителя: %s \n" \
                                           "фамилия отправителя: %s \n" \
                                           "Телефон отправителя: %s \n" \
                                           "E-mail отправителя: %s \n\n" \
                                            % \
                                           (form.cleaned_data['name'], form.cleaned_data['lastname'], form.cleaned_data['phone'],
                                            form.cleaned_data['email'])
                  
                              # и отправляем сообщение
                              send_mail(email_subject, email_body, settings.EMAIL_HOST_USER, ['target_email@example.com'],
                                        fail_silently=False)
                  
                          return render_to_response(template_name=self.template_name, context=context)
                    y
                    • 22 травня 2017 р. 10:04

                    Ладно, спасибо вам за помощь в любом случае, пойду дальше штудировать документацию

                      Evgenii Legotckoi
                      • 23 травня 2017 р. 01:37

                      В зависимости от того, какой шаблон передаётся в render_to_response, тот и будет рендериться - это всё, на что влияет заданный шаблон. Контактная форма будет видна в том, случае, если она была передана в контекст.
                      У вас есть условие в шаблоне, которое отвечает за отображение контактной формы:

                      <h1>Прайс товара</h1>
                          <article>
                          {% if contact_form %}
                              <p>Заполните все формы для отправки заявки</p>
                              <p>Наши операторы оперативно вышлют файл с подробными ценами на нашу продукцию</p>
                              <form id="contact_form"  method="post" style="width: 300px;">
                                  {% csrf_token %}
                                  {% bootstrap_form contact_form %}
                                  {% buttons %}
                                      <button type="submit" class="btn btn-primary">{% bootstrap_icon "send" %}  Отправить</button>
                                  {% endbuttons %}
                              </form>
                          {% else %}
                              <p>Сообщение отправлено</p>
                          {% endif %}
                          </article>

                      Исходя из вьюшки метод get должен нормально отображать контактную форму. А метод post будет отображать "Сообщение отправлено"

                      Возможно, что какой-то косяк в самой Контактной форме, что она не рендерится.

                        Коментарі

                        Only authorized users can post comments.
                        Please, Log in or Sign up
                        sf

                        C++ - Тест 004. Указатели, Массивы и Циклы

                        • Результат:90бали,
                        • Рейтинг балів8
                        МВ

                        Qt - Тест 001. Сигналы и слоты

                        • Результат:68бали,
                        • Рейтинг балів-1
                        ЛС

                        C++ - Тест 001. Первая программа и типы данных

                        • Результат:53бали,
                        • Рейтинг балів-4
                        Останні коментарі
                        A
                        ALO1ZE19 жовтня 2024 р. 08:19
                        Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                        ИМ
                        Игорь Максимов05 жовтня 2024 р. 07:51
                        Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                        d
                        dblas505 липня 2024 р. 11:02
                        QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                        k
                        kmssr08 лютого 2024 р. 18:43
                        Qt Linux - Урок 001. Автозапуск програми Qt під Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                        АК
                        Анатолий Кононенко05 лютого 2024 р. 01:50
                        Qt WinAPI - Урок 007. Робота з ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                        Тепер обговоріть на форумі
                        J
                        JacobFib17 жовтня 2024 р. 03:27
                        добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
                        ИМ
                        Игорь Максимов03 жовтня 2024 р. 04:05
                        Реализация навигации по разделам Спасибо Евгений!
                        JW
                        Jhon Wick01 жовтня 2024 р. 15:52
                        Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
                        КГ
                        Кирилл Гусарев27 вересня 2024 р. 09:09
                        Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
                        F
                        Fynjy22 липня 2024 р. 04:15
                        при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

                        Слідкуйте за нами в соціальних мережах