50068


Django2.0でアプリケーションを作成中です。  
ブラウザで`localhost:8000/done`  
というURLにアクセスしたら、`done.py`というpythonプログラムを実行するようにしたいです。  
どのようにしたらよいでしょうか？

views.py

[code]

    from django.shortcuts import render
    from . import done
    
    def done(request):
        print("viewのdoneが実行されています。")
        #done.Done_def()?ここに何を書いたらいいかがわからない
    return render(request, 'done.html')
    
[/code]

done.py

[code]

    def Done_def():
        print("done.pyですよ")
    
[/code]

urls.py

[code]

    path('done', views.done, name='done'),
    
[/code]

`localhost:8000/done`にアクセスすると、  
コンソールには『viewのdoneが実行されています。』と出るようにはなります。  
なのでviewにアクセスするところまでできているようですが、そこから『done.pyですよ』まで表示させたいです。  
よろしくお願いいたします。


CC BY-SA 4.0
2018-11-07T07:09:44.853
50048
2018-11-07T21:41:29.563
30883
question
python python3 django
Django2.0で、ビューにアクセスしたら用意しておいたプログラム.pyを実行したい。


そもそもの目的次第ですが、subprocessモジュールを使えば、いいと思います。

例)

[code]

    p = subprocess.Popen([sys.executable, '/path/to/done.py'],
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT)
    stdout_data, stderr_data = p.communicate()
    print(stdout_data)
    
[/code]

詳しい使い方は、[ここ](https://docs.python.jp/3/library/subprocess.html)を確認して下さい。


CC BY-SA 4.0
2018-11-07T21:36:10.660
50068
2018-11-07T21:41:29.563
2018-11-07T21:41:29.563
21092
21092
50048
answer