Форум сайта python.su
Доброго времени суток! Подскажите пожалуйста, как отправить POST-данные передаваемые в скрипте во вью на питоне.
Скрипт такой (запрашивает значение 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>
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
Офлайн
В js скрипте пропишите url вьюхи.
$.ajax({ type: "POST", url: url, data: data, success: success, dataType: dataType });
if request.is_ajax(): if request.method == 'POST': in_data = json.loads(request.body) return HttpResponse("POST")
Отредактировано balalay12 (Ноя. 22, 2015 07:37:20)
Офлайн
Спасибо
Офлайн
Урл приписал, непонятно на какой стадии вью вводить проверку json
и с какую функцию несет эта строка
in_data = json.loads(request.body)
Офлайн
Проверку json делать в post и проверять что пришло. Если пришел json то брать данные из него, если нет то из POST.
json.loads делает из json питоновский словарь http://pythonworld.ru/moduli/modul-json.html
Офлайн