Создание всплывающего окна .java для проекта Django

Обратите внимание - это (насколько мне известно) не дублирующий вопрос; в прошлом уже были подобные вопросы, но они касались апплетов и других функций, которые больше не существуют.

У меня есть рабочий .java файл SignaturePad.java, который создает всплывающий экран (JFrame), позволяющий пользователю нарисовать свою подпись и сохранить ее в формате png в папке src.

Мне нужно, чтобы он вызывался HTML-кнопкой на сайте, основанном на Django.

Я пробовал 2 вещи:

  1. Using <button onclick> to call JavaScript which calls the Java
<button onclick = "MyFunction()">Sign!</button>
<p id='demo'></p>
<script>
  MyFunction(){
    var opened = function(){
    var Main = Java.type(SignaturePad);
    Main.runJava();
  };
  document.getElementById("demo").innerHTML = "Signature Recieved";
}
</script>

На это меня вдохновили это видео, показывающее, как вызвать Java из JS и эта статья, показывающая, как использовать кнопку HTML для вызова скрипта. Похоже, что проблема даже в том, чтобы добраться до MyFunction(), поскольку я поместил в нее синтаксическую ошибку и нажал кнопку с надписью, и никакой ошибки не появилось.

  1. Using Django/HTML POST Forms which calls Java
<--! IN post_detail.html !-->
<form method="post">
  {% csrf_token %}
  <button type="submit" name="run_script">Sign!</button>
</form>
# in views.py
def post_detail(request):
    if request.method == 'POST' and 'run_script' in request.POST:
        import subprocess
        ccmd = ['javac', 'SignaturePad2.java']
        process = subprocess.Popen(ccmd)
        process.wait()
        rcmd = ['java', 'SignaturePad2']
        output = ""
        process = subprocess.Popen(rcmd, stdout=subprocess.PIPE)
        output = process.stdout.read()
        return HttpResponseRedirect('http://127.0.0.1:8000/')

На это меня вдохновил вопрос StackOverflow о запуске Java в Django и другой ответ StackOverflow (от @James ) о формах. На этот раз я получаю прекрасную 405 ошибку...

405 error

Любая помощь будет очень признательна! Заранее спасибо!

Вернуться на верх