[英]Streaming template context using context processor in django
因此,最近我在Django中处理了一些代码,但是我不确定如何处理代码中存在的问题。 我正在尝试使用上下文流式处理模板,并且上下文会根据某个变量的值而更改,然后在一段时间后将重新运行该函数,以检查变量的值是否已更改。 但是,这就是我遇到的问题。 模板在浏览器中加载时会中断,浏览器会不断尝试加载模板,直到终端出现“ Broken Pipe”错误。
到目前为止,我想到的一种解决方案是先呈现模板,然后流式传输上下文。 因此,我一直在考虑在Django中创建一个上下文处理器,该处理器根据前面提到的变量的值来流化模板的上下文。 如果可能的话,这样做的一个好方法是什么?
可以提供任何帮助或建议,我们将不胜感激。
这是我一直在使用的代码,如果有帮助的话:
from django.shortcuts import render, render_to_response
from django.template import loader, Context
from django.http import StreamingHttpResponse
import time
from .models import prototype
def scan():
name = 'server_1.html'
t = loader.get_template(name)
count = 60
r = 1
g = 2
b = 3
i = 0
while True:
if i == g:
print 'Loading Template...'
yield t.render(Context({'green' : True}))
time.sleep(count)
if i == r:
print 'Loading Template...'
yield t.render(Context({'red' : True}))
time.sleep(count)
if i == b:
print 'Loading Template...'
yield t.render(Context({'blinking' : True}))
time.sleep(count)
else:
print 'Loading Template...'
yield t.render()
time.sleep(count)
def home(request):
response = StreamingHttpResponse(scan())
return response
在这里,流似乎根本不是正确的解决方案。 相反,您需要通过Ajax或刷新整个页面来触发页面的重新加载。 您可以为此使用JS setTimeout或setInterval调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.