브라우저에서 일부 방정식을 해결하기 위해 파이썬 코드를 실행하고 싶습니다. 저는 현재 웹 작업자의 javascript를 사용하여이 작업을 수행합니다. 이것은 DOM과 전혀 상호 작용하지 않으며, 단지 입력을 받아 계산을 수행 한 다음 결과를 반환합니다. 같은 방식으로 파이썬을 사용할 수 있기를 바랍니다. 이것이 가능한가?배경 또는 웹 작업자에서 python 스크립트를 실행하십시오.
답변
클라이언트의 브라우저에서 파이썬 코드를 실행할 수 없을 것이라고 생각합니다. 당신은 파이썬과 앞뒤로 의사 소통하기위한 어떤 종류의 프로토콜을 찾아야 할 것이다. 이렇게하는 일반적인 방법은 파이썬 프로세스를 HTTP 서버 역할을하는 어딘가에서 실행시키는 것입니다. 클라이언트의 브라우저가 Python 서버에 API 호출 (HTTP 요청의 일부 형태)을하도록 할 수 있으며 실행중인 Python 코드의 개별 부분이 해당 호출을 수신하고 데이터를 다시 전송합니다. 이는 < frame> 태그 또는 브라우저에서 요청을 해석하고 응답을 해석하는 일부 자바 스크립트 코드처럼 간단 할 수 있습니다.
이것을 시도하고 새 디렉토리로 이동하여 두 개의 파일을 만듭니다. (python3에 내장)
server.py :
이#!/usr/bin/env python
import http.server
import logging
IP = '127.0.0.1'
PORT = 8001
class MyHandler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
url = self.path
headers = self.headers
print('received request:', url)
numbers = url.split('/')
print('parsed numbers:', numbers)
try:
sumTotal = 0
for num in numbers:
if num == '':
continue
sumTotal += int(num)
self.respond(sumTotal)
except ValueError as ex:
logging.error('unable to parse value: %s' % num)
self.respond(-1)
def respond(self, sumTotal):
# Send response status code
self.send_response(200)
# Send headers
self.send_header('Content-type','text/html')
self.send_header('Access-Control-Allow-Origin', '*')
self.end_headers()
# Send message back to client
message = str(sumTotal)
# Write content as utf-8 data
self.wfile.write(bytes(message, 'utf8'))
return
def main():
address = (IP, PORT)
httpd = http.server.HTTPServer(address, MyHandler)
httpd.serve_forever()
if __name__ == '__main__':
main()
인 test.html :
$ python server.py
동안 :
이제<!DOCTYPE HTML>
<html lang="en-us">
<head>
<title>Python Linking Demo</title>
<script type="text/javascript">
function addNumbers(a, b) {
var url = 'http://localhost:8001/' + a + '/' + b;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
var data = xhr.responseText;
var el = document.getElementById('data-div');
if (!el) {
return;
}
el.innerHTML = data;
}
}
xhr.open('GET', url, true);
xhr.send(null);
};
setTimeout(function(){addNumbers(7, 13);}, 1000);
</script>
</head>
<body>
<h1>With some luck, this will populate below:</h1>
<div id="data-div">{{number}}</div>
</body>
</html>
먼저 파이썬 프로세스 서버를 시작 실행중인 웹 서버도 html (또한 python3) 서비스를 시작합니다.
$ python -m http.server 8000
그런 다음, 20 숫자의 합을 포함하는 HTTP 응답을 다시 전송하는) http://localhost:8000/test.html에 브라우저를 탐색하려고하면 (파이썬 방법 MyHandler.do_GET를 호출합니다 http://localhost:8001/7/13에 요청을 test.html를 볼 수 신용은 기본적으로 복사 한이 웹 사이트로 이동합니다 : https://daanlenaerts.com/blog/2015/06/03/create-a-simple-http-server-with-python-3/.
이것은 생생하고 간단하지만 기능이나 2에 대해서는 훌륭하게 작동하지만 많은 기능을 파이썬으로 내보내는 경우 고급 라이브러리 및 프레임 워크로 업그레이드하는 것이 좋습니다. 클라이언트 측/자바 측, 서버/파이썬 측)에 대해 설명하고 있습니다.
- 1. 웹에서 Python 스크립트를 실행하십시오.
- 2. CruiseControl.NET에서 python 스크립트를 실행하십시오.
- 3. HTML 웹 페이지의 python 스크립트를 실행하십시오.
- 4. 내 웹 사이트에서 Python 스크립트를 실행하십시오.
- 5. webpy에서 python 스크립트를 실행하십시오.
- 6. vb.net에서 python 스크립트를 실행하십시오.
- 7. AutoIt에서 Python 스크립트를 실행하십시오.
- 8. ASP.Net에서 원격 Python 스크립트를 실행하십시오.
- 9. iOS 앱에서 python 스크립트를 실행하십시오.
- 10. 다른 디렉토리에서 (python) 스크립트를 실행하십시오.
- 11. Python의 Python 터미널에서 Python 스크립트를 실행하십시오.
- 12. Windows의 cmd에서 Python 스크립트를 실행하십시오.
- 13. Electron 앱에서 python 스크립트를 실행하십시오.
- 14. OSX의 PackageMaker에서 Python 스크립트를 실행하십시오.
- 15. Mac 터미널에서 Python 스크립트를 실행하십시오.
- 16. ios에서 간단한 python 스크립트를 실행하십시오.
- 17. Windows에서 PHP로 python 스크립트를 실행하십시오.
- 18. 웹 작업자에서 캔버스 사용
- 19. 서비스로 python 스크립트를 실행하십시오. 필요하다면 virtualenv (우분투)
- 20. 웹 사이트에서 쉘 스크립트를 실행하십시오.
- 21. 매일 Python 스크립트를 실행하여 프로그램을 열고 실행하십시오.
- 22. Google Cloud Compute Engine에서 python 스크립트를 실행하십시오.
- 23. 아마존 EC2 또는 다른 서버에서 Python 스크립트를 실행하십시오.
- 24. javascript/html에서 웹 페이지를로드하기 전에 python 스크립트를 실행하십시오.
- 25. php wget 및 python 스크립트를 실행하십시오.
- 26. 웹 사이트에서 Python 파일을 실행하십시오.
- 27. 배경 작업자에서 상위 창 양식에 액세스
- 28. 웹 페이지에서 클라이언트 쪽에서 js 또는 PHP 스크립트를 실행하십시오.
- 29. 웹 작업자에서 동기화 대기 메시지
- 30. pyspark 설정을 사용하여 python 스크립트를 실행하십시오.
업데이트 : 이제 자바 스크립트에서 실행되는 실험용 파이썬 인터프리터가 있습니다. @ http://pypyjs.org에서 확인하십시오. – mathewguest
또한 브라우저 개발자 도구에서 HTTP 요청을 보는 것이 좋습니다 (핫키는 많은 웹 브라우저에서 F12 임). test.html 페이지에 대한 HTTP 요청 1 개와 Python 서버에 대한 두 번째 AJAX 요청이 표시되어야합니다. 해당 요청의 응답에서 해당 숫자의 합계가됩니다. – mathewguest