見出し画像

#25 PyScript


Hack The BoxのCTFに熱中していて、公開を忘れていました!
PyScriptなるものがでてきたので、遊んでみました。Pythonがブラウザで動きます。

作業

DockerでDjango環境を作って、PyScriptを動かしてみます。

Dockerの公式チュートリアルを参考に、Django環境を用意します。
まず、Dockerの設定ファイルを作ります。

//Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
//requirements.txt
Django==4.0.4
psycopg2
//docker-compose.yml
version: '3'

services:
  db:
    image: postgres
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=root
      - POSTGRES_PASSWORD=password

  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

ファイルができたら、Dockerを立ち上げます。

$ docker-compose run web django-admin startproject pyscript .
$ docker-compose up -d 

Dockerが問題なく立ち上がったら、localhost:8000からDjangoが動いているのを確認できます。


それでは、PyScriptを試しましょう。
Djangoアプリを用意します。

//コンテナに入る
$ docker compose exec web bash
//アプリを作成
$ python manage.py startapp test

Djangoの公式ドキュメントに沿って、ページを表示させましょう。
PyScriptは、配布されているスクリプトを読み込むだけで使えるようになります。

<html>
    <head>
        <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
        <script defer src="https://pyscript.net/alpha/pyscript.js"></script> 
    </head>
    <body>
        <main>
            <h1>Test</h1>
            <py-script>print("Hello World!")</py-script>
        </main>
    </body>
</html>

表示されました!
Pythonが実行されるまでに5秒程度かかりました。スタイルもPython風になっています。


まとめ

手軽にできます。少し時間がかかるのと、セキュリティ面は課題でしょう。更新に期待です!

EOF

この記事が気に入ったらサポートをしてみませんか?