POST http://127.0.0.1:8000/notifications/ajax/ 403(FORBIDDEN)//使用ajax + django

时间:2016-02-25 06:28:27

标签: jquery python ajax django

为什么我收到此错误,我认为我有正确的ajax功能,我设置了正确的网址...请,任何帮助都将受到高度赞赏。

<div id='notificationsLoader'>
</div>
<script>
$(document).ready(function(){
  $(".notification-toggle").click(function(e){
    e.preventDefault();
    $.ajax({
      type:"POST",
      url:"{% url 'get_notifications_ajax' %}",
      data: {
        csrfmiddlewaretoken: "{{csrf_token}}",
      },
      success: function(data){
        $("#notificationsLoader").html('<h3>notifications</h3>');
        $(data.notifications).each(function(){
          $("notificationsLoader").append(this + "<br/>")
        })
        console.log(data.notifications);
      },
      error: function(rs, e){
        console.log(rs);
        console.log(e);
      }


    })
  })
})
</script>

views.py

@login_required
def get_notifications_ajax(request):
    notification = Notification.objects.get(id=id)
    notes =[]

    for note in notifications:
        notes.append(str(note))
    data={
        "notifications":notes
        }
    json_data = json.dumps(data)
    return HttpResponse(json_data, content_type='application/json')

并在 urls.py

urlpatterns += patterns('notifications.views',
    url(r'^notifications/$', 'all', name='notifications_all'),
    url(r'^notifications/ajax/$', 'get_notifications_ajax', name='get_notifications_ajax'),
    url(r'^notifications/(?P<id>\d+)/$', 'read', name='notifications_read'),

)

我已尝试在 settings.py 中更改允许主机但不起作用。我几乎可以肯定代码是正确的,因为我正在遵循一个教程,并且使用此代码教师可以毫无问题地完成它。谢谢,

完整错误

  

POST http://127.0.0.1:8000/notifications/ajax/ 403(FORBIDDEN)&gt;   错误)发送@jquery.min.js:4m.extend.ajax @jquery.min.js:4(匿名)   函数)@(索引):359m.event.dispatch @jquery.min.js:3r.handle @   jquery.min.js:3

1 个答案:

答案 0 :(得分:0)

您的数据正在使用我猜测您尚未设置的csrf_token上下文变量,您更有可能想使用django模板标记作为令牌

  url:"{% url 'get_notifications_ajax' %}",
  data: {
    csrfmiddlewaretoken: "{% csrf_token %}",
  },

除此之外,500错误是服务器错误,在调试和开发时,您应该将DEBUG设置设置为true,以获得更多信息性错误。