Скрипт такой (запрашивает значение phone в модальном окне) в недописанном состоянии:
$("#book__form").submit(function(){ if($('input[name="phone"]').val() == ""){ alert("Введите номер телефона") }else{ $(".modal_div_book_book").hide(), $(".modal_div_book_success").show(); var data = $('#book__form').serializeArray(); $.ajax({ type: "post", data: data, error: function(err){ console.log('error'); }, success: function(msg){ console.log('success'); }, dataType: 'json', }); } return false; });
Кусок шаблона под модалку:
<form id="book__form"> {% csrf_token %} <input type="text" name="phone" placeholder="Введите телефон " /> <input type="submit" value="Заказать звонок"/> </form>
На прочих страницах информация из шаблона обрабатывается вьюхой без модальных окон.
Кусок шаблона
<form action="" method="post"> {% csrf_token %} <div class="feedback__title">Вы можете связаться с нами<br>заполните форму</div> <input name="name" type="text" placeholder="Введите имя"> <input name="phone" type="tel" placeholder="Введите телефон +7 XXX XXX XX XX"> <textarea name="message" placeholder="Ваше сообщение (не обязательно)"></textarea> <button type="submit">Отправить сообщение</button> </form>
B собственно вьюха на основе DetailView:
class BaseContactsView(DetailView): model = Contacts def get_object(self, queryset=None): return super(BaseContactsView, self).get_queryset().first() def dispatch(self, request, *args, **kwargs): self.form = CallbackForm(self.request.POST or None) return super(BaseContactsView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(BaseContactsView, self).get_context_data(**kwargs) context.update({ 'form': self.form, 'errors': self.form.errors if self.form.errors else None, 'page': SeoUrl.objects.filter(page=CONTACTS).first() }) return context def post(self, request, *args, **kwargs): print request.POST print '=================================================================' if self.form.is_valid(): self.form.save() send_mail(self.request.POST.get('name'), "%s - %s - %s" % (self.request.POST['phone'], self.request.POST.get('message', None), self.request.path), 'noreply@xxx.ru', [User.objects.filter(is_superuser=True).first().email]) return HttpResponseRedirect('/thanks/') # return self.get(self, request, *args, **kwargs) return True
И, собственно, вопрос Могу ли я задействовать существующую вью (отправляет данные в админку и на почту)? Или мне нужно писать отдельную? И как связать скрипт и вьюху?
Скажите, пожалуйста, где прочитать/посмотреть