我正在开展项目,我需要创建单独的页面,其中包含来自网站的所有http请求。我创建了中间件,它将所有请求存储在数据库中,并且演示页面显示了最新的50个请求列表。 我需要这个演示页面在新请求到来时立即动态更新。我在AJAX周围玩,但最后却陷入了创造无限循环的困境。 任何想法或提示如何以最佳方式做到这一点?
更新(有进展): 这就是我如何使用中间件来收集非AJAX请求以避免无限循环。我的数据库正在使用除AJAX检查程序之外的所有其他HTTP请求进行更新(代码如下)。
中间件类:
# Middleware that stores http requests to the database
class HttprequestMiddleware(object):
def process_request(self, request):
htpr = [request.method, request.path_info,\
request.META['HTTP_HOST'],\
request.META['SERVER_PORT'],\
request.META['SERVER_NAME'],\
request.META['HTTP_USER_AGENT'],\
request.META['REMOTE_ADDR'],\
request.META['REMOTE_HOST']]
if request.is_ajax() is not True:
q = Requestbase(req=htpr, req_date=timezone.now())
q.save()
AJAX请求:
$(document).ready(function() {
function refresh() {
$.ajax({
url: "/mypage/requestview/",
success: function(update) {
$("body").html(update);
}
});
};
setInterval(refresh(), 5000);
})
现在它可以正常工作,但我对连续setInterval()
并计划访问数据库感到满意,检查记录数量是否已更改,并且仅在刷新DOM之后。
请告知。