#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