javascript - Django,使用相同的 View 取决于它是 GET 还是 AJAX POST 方法

标签 javascript jquery ajax django

所以我在 Django 中使用同一个 View 来做两件事,具体取决于请求是 GET 还是 POST 方法。

GET 方法只是在用户请求时呈现页面,而 POST 是当我使用 ajax 将信息从前端发送到 View ,以便我可以处理它并将其保存在数据库中。

这是 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)

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

最佳答案

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

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

或使用 $.post捷径

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

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

关于javascript - Django,使用相同的 View 取决于它是 GET 还是 AJAX POST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47204251/

相关文章:

javascript - jQuery 无法在 Ajax 上加载

javascript - 如何防止方法的 `this` 引用到调用它的对象

javascript - Meteor JS 中的 Deps 自动运行

javascript - 当获取 2 个不同函数中的两个变量的总和时,结果为 NaN

javascript - Angular 2 Form - 当 ngModel = empty obj 时禁用提交

jquery - 如何动态查找下一个li标签

javascript - 向 POST 请求发送成功响应

javascript - 如何使用 Jquery/Ajax 处理无限滚动的页码?

javascript - 自动提交未触发

javascript - HTML/JS 中的 iOS 风格滚动