y
yaregMay 21, 2017, 11:46 a.m.

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

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

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

11
Evgenii Legotckoi
  • May 21, 2017, 12:27 p.m.

День добрый.

Да. Такое можно реализовать. Самое простое - это посмотрите в сторону использования 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
    • May 21, 2017, 12:58 p.m.

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

      Evgenii Legotckoi
      • May 21, 2017, 1:01 p.m.

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

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

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

          y
          • May 21, 2017, 1:20 p.m.

          Вот второй

            Evgenii Legotckoi
            • May 21, 2017, 1:39 p.m.

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

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

            context['contact_form'] = ContactForm()

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

              y
              • May 21, 2017, 1:55 p.m.

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

                y
                • May 21, 2017, 2:04 p.m.

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

                  y
                  • May 21, 2017, 2:24 p.m.
                  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
                    • May 22, 2017, 10:04 a.m.

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

                      Evgenii Legotckoi
                      • May 23, 2017, 1:37 a.m.

                      В зависимости от того, какой шаблон передаётся в 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 будет отображать "Сообщение отправлено"

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

                        Comments

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

                        C ++ - Test 004. Pointers, Arrays and Loops

                        • Result:50points,
                        • Rating points-4
                        m

                        C ++ - Test 004. Pointers, Arrays and Loops

                        • Result:80points,
                        • Rating points4
                        m

                        C ++ - Test 004. Pointers, Arrays and Loops

                        • Result:20points,
                        • Rating points-10
                        Last comments
                        i
                        innorwallNov. 14, 2024, 12:07 p.m.
                        Circuit switching and packet data transmission networks Angioedema 1 priligy dapoxetine
                        i
                        innorwallNov. 14, 2024, 11:42 a.m.
                        How to Copy Files in Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
                        i
                        innorwallNov. 14, 2024, 9:09 a.m.
                        Qt/C++ - Tutorial 068. Hello World using the CMAKE build system in CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
                        i
                        innorwallNov. 14, 2024, 4:05 a.m.
                        EVILEG-CORE. Using Google reCAPTCHA 2001; 98 29 34 priligy buy
                        i
                        innorwallNov. 14, 2024, 4 a.m.
                        PyQt5 - Lesson 007. Works with QML QtQuick (Signals and slots) priligy 30mg Am J Obstet Gynecol 171 1488 505
                        Now discuss on the forum
                        i
                        innorwallNov. 14, 2024, 3:39 a.m.
                        добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
                        i
                        innorwallNov. 11, 2024, 10:55 a.m.
                        Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                        9
                        9AnonimOct. 25, 2024, 9:10 a.m.
                        Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                        Follow us in social networks