所以我在 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/