ググったらそのまんまできる記事なかったから書いた
やりたいこと
- Windows 10 or 11
- バッチファイル(.ps1)から立ち上げたい
- djangoのrunserverコマンドで開発用サーバーを立てる
- そのままブラウザを立ち上げてhttp://127.0.0.1:8000/にアクセスする
やり方
- 以下のコードをコピーして拡張子は.ps1のファイルにして保存
- djangoのmanage.pyがあるフォルダにそのファイルを置く
- 保存したファイルを右クリックして>PowerShellで実行、黒い画面が2個立ち上がる( ※.ps1ファイルの既定のアプリケーションをPowerShellにしておけばダブルクリック実行できるかも)
- 終了するときは起動してる黒い画面を2個とも閉じる
# A. パーミッションの変更 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned # B. このスクリプトがあるディレクトリに移動 $path = Split-Path -Parent $MyInvocation.MyCommand.Path Set-Location $path # C. テストスクリプト実行 Start-Process -FilePath python -ArgumentList 'manage.py runserver' Start-Sleep -Seconds 7 start 'http://127.0.0.1:8000/' Pause
解説
A. パーミッションの変更
- Windowsで.ps1ファイル(バッチファイル)をそのまま実行しようとするとPermissionなんとかで実行権限弾かれる
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
を書いておけば実行できるようになる
B. このスクリプトがあるディレクトリに移動
- このスクリプトがあるディレクトリに移動します
- manage.pyがある場所と違うところにこのスクリプト(.ps1ファイル)を置きたいなら
Set-Location $path
の次の行とかで適当にcd manage.pyがあるディレクトリまでのパス
を書いてください
C. テストスクリプト実行
- Start-Processでサブプロセス呼び出してdjangoのrunserverしてます
- ローカルサーバーが立ち上がるまでちょこっと待機するために、Start-Sleepして7秒待機してます
- startでブラウザ立ち上げてhttp://127.0.0.1:8000/にアクセスしてます
参考記事
- Start-Process (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn
- Start-Sleep (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn
- PowerShell/プロセス管理/Start-Processでps1スクリプトを起動する - yanor.net/wiki
- 【Start-Process】PowerShellで別プロセスを起動させる方法 | チェシャわら
- ps1ファイルがあるフォルダに移動する - sutefu7.com