Windowsのps1ファイルからdjangoの開発用サーバーをrunserver起動するバッチ - キムチのきもち

キムチのきもち

キムチのきもちになって考えてみよう

Windowsのps1ファイルからdjangoの開発用サーバーをrunserver起動するバッチ

ググったらそのまんまできる記事なかったから書いた

やりたいこと

  • Windows 10 or 11
  • バッチファイル(.ps1)から立ち上げたい
  • djangoのrunserverコマンドで開発用サーバーを立てる
  • そのままブラウザを立ち上げてhttp://127.0.0.1:8000/にアクセスする

やり方

  1. 以下のコードをコピーして拡張子は.ps1のファイルにして保存
  2. djangoのmanage.pyがあるフォルダにそのファイルを置く
  3. 保存したファイルを右クリックして>PowerShellで実行、黒い画面が2個立ち上がる( ※.ps1ファイルの既定のアプリケーションをPowerShellにしておけばダブルクリック実行できるかも)
  4. 終了するときは起動してる黒い画面を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/にアクセスしてます

参考記事

読んだけどPowerShellだとできなかった参考記事