Как отправить данные с помощью Ajax с моделью. Форма в Django и Jquery - PullRequest
1 голос
/ 28 апреля 2011

Привет, ребята, не могли бы вы помочь мне отправить данные в форму.Вот что у меня есть: модели:

class Test (models.Model):
    text    = models.TextField(blank=True, max_length=300)

просмотров:

def post_test(request):
    print 'aesewewewew'
    if request.is_ajax():
        print 'ajax'
        form = TestForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponse('success')
        else:
            return HttpResponse('failed')
    else:
        print 'aaaaa'

шаблоны:

<div id="post"></div>
<a href="/" onclick=click()>Post</a>
<script>
function click(){
    $.post("/post", {
        text: "eqweqeqeqweqw"
    },
    function(data) {
        alert(data);
    }
)};

url:

(r'^post','test_propject.main.views.post_test'),

форма:

class TestForm (forms.ModelForm):
    class Meta:
        model = Test

Это не работает для меня.Я не могу найти ошибку здесь.Не могли бы вы дать ссылку, возможно, на рабочий код.Получить запрос работает нормально.Может быть, существует какой-то способ создать простую форму, созданную из моделей, отправляющую данные через ajax без перезагрузки страницы.

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

Попробуйте это:

def post_test(request):
    if request.method == 'POST':
        form = TestForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponse('success')
        else:
            return HttpResponse('failed')  

Я настоятельно рекомендую вам изучить урок здесь перед тем, как приступить к выполнению вышеуказанного ..

Редактировать: Вашurls.py должен выглядеть примерно так:

from django.conf.urls.defaults import *
from test_project.main.views import post_test

urlpatterns = patterns('',
  url(r'^post/$', post_test, name = 'post_test'),
)

И ваши шаблоны:

<script>
function click(){
    $.post('{% url post_test %}', {
        text: "eqweqeqeqweqw"
    }
)};
</script>

Просьба учесть, что {% url post_test%} не работает во внешних js-файлах.

0 голосов
/ 04 мая 2011

Главной моей проблемой был мой мозг).Я забыл включить:

<script type="text/javascript">
        $('html').ajaxSend(function(event, xhr, settings) {
            function getCookie(name) {
                var cookieValue = null;
                if (document.cookie && document.cookie != '') {
                    var cookies = document.cookie.split(';');
                    for (var i = 0; i < cookies.length; i++) {
                        var cookie = jQuery.trim(cookies[i]);
                        // Does this cookie string begin with the name we want?
                        if (cookie.substring(0, name.length + 1) == (name + '=')) {
                            cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                            break;
                        }
                    }
                }
                return cookieValue;
            }
            if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
                // Only send the token to relative URLs i.e. locally.
                xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
            }

        });
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...