我目前有一个很长的运行脚本,它会产生各种输出。我想要做的是当我的webapp上的一个按钮被按下时,这个脚本运行,并且输出能够实时显示在网页的文本区域中。我想知道用Django实现这个最简单的方法。打印输出到网页Django
6
A
回答
1
你需要的是一个WebSocket!不是由django直接支持,但我建议看看Websockets for Django applications using Redis。我以前使用过这个,设置和使用起来非常简单。
例如创建一个Django的模板(如output.html
):
<html>
...
<body>
<textarea id="output" row=3 cols=25></textarea>
<script>
var ws = new WebSocket('{{ ws_url }}');
ws.onmessage = function(e) {
$('#output').append(e.data);
};
</script>
</body>
</html>
然后创造出你的脚本调用,只要它想输出消息到文本区的方法:
def output_message(session_key, user, message):
conn = redis.StrictRedis()
ws_url = '{0}:{1}'.format(session_key, user)
conn.publish(ws_url, message)
而且最后,您需要在您的views.py
中指定一种呈现output.html
模板的方法:
def output_console(request):
template_values = {'ws_url':'ws://{SERVER_NAME}:{SERVER_PORT}/ws/{0}?subscribe-session'.format(request.user.id, **request.META)}
return render(request, 'output.html', template_values)
查看项目git repo上的chat server以获得更深入的代码示例。
希望有所帮助,祝你好运!
0
如果你在谈论实时输出,那么你需要使用AJAX。
要设置脚本,在网页上您可以有一个按钮发送一个AJAX请求。
function ajax_call_model(data_JSON_Request, object_id){
$(function jQuery_AJAX_model(){
$.ajax({
type: 'GET',
url: '/ajax_request/',
data: something,
datatype: "json",
success: function(data) {
$("#output_id").html(data);
},//success
error: function() {alert("failed...");}
});//.ajax
});//jQuery_AJAX
};//ajax_call
在视图中,您将有这样的事情:
def ajax_request(request):
something = request.GET.get('something', '')# Receives from AJAX
output = #Does something with the request
jsonDump = json.dumps(str(output))
return HttpResponse(jsonDump, content_type='application/json')
相关问题
- 1. 打印网页抓取工具输出
- 2. Django停止打印到标准输出
- 3. 打印程序输出到网页,因为它收到
- 4. 输入到打印输出
- 5. 打印网页到POS打印机
- 6. 使用Flask将脚本输出打印到网页
- 7. 链接打印到网页
- 8. 将输出打印到文件中或不打印输出?
- 9. 打印网页
- 10. 打印网页
- 11. 输出到打印机Powershell
- 12. 打印输出
- 13. 打印输出
- 14. 输出打印
- 15. 打印输出
- 16. ActiveX打印网页
- 17. CSS打印网页
- 18. 打印电网与特定的输出
- 19. 从servlet打印/输出jsp页面
- 20. iTextSharp打印GridView - 输出页眉宽度
- 21. 打印一页网页
- 22. 带有@ font-face的打印输出网页
- 23. 收据打印机 - 从网页打印
- 24. 宏打印输出
- 25. 输出打印慢
- 26. 如何将Django的runserver输出打印到文件中?
- 27. 打印输出收据打印机
- 28. CHtmlView打印输出不同于IE打印输出
- 29. 如何将网页干净地打印到点阵打印机?
- 30. 从网页打印条形码到Zebra打印机
看一看:http://stackoverflow.com/questions/4787530/does-django-have-a-way-to-open-a-http-long-poll-connection – alecxe
有没有非常简单的方法来这样做,所以你可能会得到几个完全不同的答案,这些答案都是针对不同的,更具体的问题的解决方案。有关您的要求的更多信息(您需要的实时时间有多近?您是否期望不断的流式输出或仅需要立即显示的偶然输出? –