Django,使用相同的视图取决于它是GET还是AJAX POST方法

时间:2017-11-09 14:23:13

标签: javascript jquery ajax django

所以我在Django中使用相同的视图做两件事,具体取决于请求是GET还是POST方法。

GET方法只是在用户请求时呈现页面,POST是我使用ajax从前端向视图发送信息的时候,以便我可以处理它并将其保存在数据库中。 / p>

这是Javascript / Ajax:

  var url = window.location.pathname;
  $.ajax({
    url: url,
    data: {
        'vals': vals
        },
    dataType: 'json',
    success: function (data) {
        //On sunccess
    }
    });

window.location.pathname中包含review_id,如下所示:

/reviews/*ID*/add_questions/

这是我的Django View:

def add_questions(request, review_id = None):
#print('yes')
if request.method == 'GET':
    try:
        review = ReviewBlock.objects.get(pk = review_id)
        args = {'review': review}
        return render(request, 'add_questions.html', args)
    except ObjectDoesNotExist:
        return HttpResponseNotFound('<h1>Page not found</h1>')
elif request.method == 'POST':
    print(review_id)

正如您所看到的,我有一个print语句来查看ajax调用是否正常工作,但是,它从不在控制台中打印它。

1 个答案:

答案 0 :(得分:3)

$.ajax默认为GET请求。要执行POST请求,您需要添加type: "POST",

$.ajax({
  type: "POST",
  url: url,
  ...

或使用$.post快捷方式

$.post({
  url: url,
  ...

如果对ajax和非ajax请求使用相同的请求方法,您可能会发现request.is_ajax()方法很有用