Почтовый запрос Ajax к TastyPie ничего не делает

У меня проблема с API Django TastyPie и созданием почтового запроса в JQuery. Запрос на скручивание:

curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"created":"1983-01-30 09:20","author":"me","body":"meh", "post":"/api/v1/entry/1/"}' http://localhost:8000/api/v1/comment/ 

Работает совершенно нормально. Однако, когда я пытаюсь использовать запрос jquery ajax в следующем коде. Это абсолютно ничего не делает. Я уже включил XS-Sharing в свои настройки. Я проверил в консоли ошибок. JSON для данных поставляется в правильном формате. Кажется, он застрял в OPTIONS с предоставленным URL-адресом, но я не совсем уверен. Вот мой код:

API

    class EntryResource(ModelResource):
    user = fields.ForeignKey(UserResource, 'user')

    class Meta:
        queryset = Entry.objects.all()
        resource_name = 'entry'
        authorization = DjangoAuthorization()
        filtering = {
            'user': ALL_WITH_RELATIONS,
            'pub_date': ['exact', 'lt', 'lte', 'gte', 'gt'],
        }


class CommentResource(ModelResource):
    post = fields.ForeignKey(EntryResource, 'post')

    class Meta:
        queryset = Comment.objects.all()
        resource_name = 'comment'
        authorization = Authorization()

МОДЕЛЬ

    class Entry(models.Model):
    user = models.ForeignKey(User)
    pub_date = models.DateTimeField(default=datetime.datetime.now)
    title = models.CharField(max_length=200)
    slug = models.SlugField()
    body = models.TextField()

    def __unicode__(self):
        return self.title

    def save(self, *args, **kwargs):
        # For automatic slug generation.
        if not self.slug:
            self.slug = slugify(self.title)[:50]
        return super(Entry, self).save(*args, **kwargs)


class Comment(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    author = models.CharField(max_length=60)
    body = models.TextField()
    post = models.ForeignKey(Entry)

    def __unicode__(self):
        return unicode("%s: %s" % (self.post, self.body[:60]))


class CommentForm(ModelForm):
    class Meta:
        model = Comment
        exclude = ["post"]

HTML

    <form id="add_comment" action="{% url blogsite.views.post post.pk%}" method="POST">{% csrf_token %}
    <div id="cform">
        Name: {{ form.author }}
        <p>{{ form.body|linebreaks }}</p>
        <input type="hidden" id="post" value= "{{post.pk}}">
    </div>
    <div id="submit"><input type="submit" value="Submit"></div>
</form>

И JS-ФАЙЛ

$(document).ready(function() {
$('#add_comment').submit(function() {
  var data = JSON.stringify({
    "created": "1993-01-31 09:18",
    "author": $("#id_author").val(),
    "body": $("#id_body").val(),
    "post": "api/v1/entry/"+ $("#post").val() + "/"
  });
  console.log(data);
  console.log("hello");
  $.ajax({
      url: 'http://localhost:8000/api/v1/comment/',
      type: 'POST',
      data: data,
      contentType: 'application/json',
      processData: false,
      success: function(data){
        console.log("success");
      },
      error: function(data){
        console.log("There was an error processing" + data);
      }
  });
    });
});

Спасибо за любую помощь, которую вы можете дать. У меня заканчиваются идеи, в чем может быть проблема.


person user992296    schedule 30.11.2012    source источник
comment
В вашей форме есть csrf_token, и вы не включаете его в свой запрос ajax, но тогда ваш запрос curl также не включает его. Это точно не ошибка 403?   -  person Enrico    schedule 30.11.2012
comment
Я не думаю, что ресурсы TastyPie уважают токен CSRF. Поскольку это связано с событием отправки формы, вам может потребоваться preventDefault для объекта события, чтобы вы не получили загрузку страницы до завершения запроса ajax. Предлагает ли сетевая панель Chrome какую-либо помощь? Заголовки там выглядят правильно и т.д.? Запрос вообще сделан?   -  person dokkaebi    schedule 30.11.2012
comment
Привет, я исправил проблему, это было не с CSRF, потому что я разрешаю XS_sharing с вкусным пирогом. Предотвращение по умолчанию было частью проблемы, но реальная проблема заключалась в том, что в URL-адресе json отсутствовала косая черта перед /api/v1/comment/, с этим и предотвращением по умолчанию проблема была исправлена.   -  person user992296    schedule 30.11.2012