所以我在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调用是否正常工作,但是,它从不在控制台中打印它。
答案 0 :(得分:3)
$.ajax
默认为GET请求。要执行POST请求,您需要添加type: "POST",
$.ajax({
type: "POST",
url: url,
...
或使用$.post
快捷方式
$.post({
url: url,
...
如果对ajax和非ajax请求使用相同的请求方法,您可能会发现request.is_ajax()
方法很有用