Уведомления

Группа в Telegram: @pythonsu

#1 Июль 21, 2014 10:49:50

anton41k
Зарегистрирован: 2013-12-18
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

передача формы от ajax

Помогите пожалуйста реализовать передачу данных из формы в views с помощью ajax.
model.py

class Expense(models.Model):
    date = models.DateTimeField(verbose_name=u'Дата', default=timezone.now)
    expense = models.IntegerField(verbose_name=u'Расход')
    goods = models.ForeignKey('Goods', verbose_name=(u'Товар'), related_name='expense')
    def __unicode__(self):
        return u'%s'%(self.expense)
    class Meta:
        verbose_name_plural = "Расход"
        ordering=['date']
from django.forms import ModelForm
from expense.models import *
class ExpenseForm(ModelForm):
	class Meta:
		model=Expense
{%extends "start.html"%}
{%block title%}Товар{%endblock%}
{%load staticfiles%}
{%load goods_extras%}
{%load i18n%}
{%block content%}
<script type="text/javascript">
   $(document).ready(function() {
       $("#test").submit(function(event){
           event.preventDefault();
           var form_data=$("#test").serializeArray;
           $.ajax({
                type:"POST",
                url:"/test/",
	  data:form_data
                    });
       });
       return false;
    });
</script>
<form id="test" method="post" action="{{action}}" >{% csrf_token %}
<table>
{{form}}
</table>
<input type="submit" value="Добавить" />
</form>
{%endblock%}
В start.html прописан jquery
<script type=“text/javascript” src=“/static/js/jquery-2.0.2.min.js”>.
Нужно при нажатии кнопки “Добавить” ,без перезагрузки страницы, данные передавались во views с помощью ajax.
url.py
url(r'^test/$', start)
views.py
def start(request):
	expense_list = Expense.objects.all()
	action="/test/"
	if request.method=='POST' and request.is_ajax():
		form=ExpenseForm(request.POST)
		if form.is_valid():
			e=form.save()
			data = serializers.serialize('json', [e,])
                                          return HttpResponse(data, mimetype='application/json')
	else:
		form=ExpenseForm()
		
	return render_to_response( 'start.html',locals(), context_instance=RequestContext(request))

Отредактировано anton41k (Июль 21, 2014 19:24:42)

Офлайн

#2 Июль 21, 2014 11:50:08

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

передача формы от ajax

onclick="send();" 
А где функция то?

url:"/xhr_proc/",

url.py
url(r'^test/$', start)
А где такой урл то?



Отредактировано FishHook (Июль 21, 2014 11:52:06)

Офлайн

#3 Июль 21, 2014 13:01:34

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

передача формы от ajax

держите пример

...
<li class="amenu" name="home/">Кнопка-список</li>
...
<div id="content">
здесь будет контент, загружен после нажатия на кнопку
</div>
 $(".amenu").click(function(){
    var page = $(this).attr('name');
    $.get(("/menu/"+page), function(data){
        $("#content").html(data);
    };
};
views.py
def menu(request, page=None, full=False):
    if page == "home":
        data = Home.objects.get(pk=1)
    return render_to_response('base.html', {'data': data})
urls.py
url(r'^menu/(?P<page>.*)/', menu),
если пример не осилите, когда проснусь напишу как у вас должно быть



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Июль 21, 2014 13:04:07)

Офлайн

#4 Июль 21, 2014 19:35:41

anton41k
Зарегистрирован: 2013-12-18
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

передача формы от ajax

Просто столько был перепробывал что и сам запутался, уже исправил.
terabayt, спасибо попробую,но если вас не затруднит может черконете пару строчек, СПАСИБО!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version