首先,我没有很多django,js和ajax的经验,但这是一个非常简单的例子,我找不到我的ajax调用需要花费大量时间的原因。 我当前的dev配置是:windows 7,python 3.6,django 1.10.5,运行在localhost上的服务器 - 127.0.0.1:8000
基本上,我点击一个按钮(在特定按钮组中),这会激活ajax,并根据回复,更新按钮的颜色。
信息:实际上,我使用的东西有点复杂,但由于它也很慢,我试图简化它,看看它出错了,但我仍然找不到原因。
代码ajax:
$('body').on('click', '.some_module', function(){
var $something= $(this);
$.ajax({
url: 'some_function/',
type: 'GET',
data: {'some_name' : "just_example"},
dataType: 'json',
success: function(data){
...some_action_where_i_change_color_of_button...
...not important because even if it's empty, it's slow...
}
});
});
代码django,views.py:
def change_module(request):
# ...for example using hardcoded return...
data = {
'success': True,
'curr': 'something',
'selected': [],
'previous': []
}
return HttpResponse(json.dumps(data), content_type='application/json')
# tried also JSONResponse, the same feedback
因此,通过使用此示例,我等待超过1秒的更新, TTFB总是大约1秒。 TTFB与服务器端有关,但我真的不明白它是如何如此缓慢,因为我发送硬编码的json里面只有很少的字符串元素。
Chrome developer tools TTFB image
如果遇到类似问题的人与我分享他的解决方案,我将不胜感激。
答案 0 :(得分:0)
如果我是你,我想使用Django Generic View类。 查看当前文档:https://docs.djangoproject.com/en/1.10/topics/class-based-views/
看看这个例子:
from django.http import JsonResponse
from django.views.generic import View
class MyViewClass(View):
def get(self, request):
data = {
'success': True,
'curr': 'something',
'selected': [],
'previous': []
}
return JSONResponse(data)
在你的js中: 关于类型的东西:
"如果您之前使用的是jQuery版本,则应该使用type 1.9.0"
$.ajax({
method: "GET", #HERE TRY TO USE METHOD INSTEAD OF TYPE
url: "/some_function",
data: {'some_name' : "just_example"},
datatype: "json",
success: function (data) {
... Do Something here...
}
}),