Python の Web フレームワークと言えば、やはり Django でしょう。
他にも Flask や Pyramid などもありますが、ORM やテンプレートエンジンが同梱されている フルスタックな Django が便利で私は好きです。
バージョン
- CentOS 7
- Python 3.6.4
- pip 9.0.1
- Django 2.0.3
インストール
CentOS 7 と Python 3.6.4 と pip 9.0.1 のインストールは、以前書いた記事「Mac + Vagrant + CentOS 7 で Python3 環境を構築する」を参考にしてください。
今回は、ホスト側のブラウザから確認したいので、Vagrantfile を少し変更してホストオンリーアダプタを足しています。
$ diff Vagrantfile Vagrantfile.org 15c15 < config.vm.box = "centos/7" --- > config.vm.box = "base" 35c35 < config.vm.network "private_network", ip: "192.168.33.10" --- > # config.vm.network "private_network", ip: "192.168.33.10" 66,71c66,69 < config.vm.provision "shell", inline: <<-SHELL < yum install -y https://centos7.iuscommunity.org/ius-release.rpm < yum install -y python36u python36u-libs python36u-devel python36u-pip < yum update -y < reboot < SHELL --- > # config.vm.provision "shell", inline: <<-SHELL > # apt-get update > # apt-get install -y apache2 > # SHELL
Django のインストール
Django のインストールには、Python のパッケージ管理コマンド pip を使います。
[vagrant@localhost ~]$ sudo pip3.6 install django Collecting django Downloading Django-2.0.3-py3-none-any.whl (7.1MB) 100% |████████████████████████████████| 7.1MB 118kB/s Collecting pytz (from django) Downloading pytz-2018.3-py2.py3-none-any.whl (509kB) 100% |████████████████████████████████| 512kB 1.2MB/s Installing collected packages: pytz, django Successfully installed django-2.0.3 pytz-2018.3 You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command. [vagrant@localhost ~]$
pip でインストールしたパッケージは、pip freeze で確認することができます。
[vagrant@localhost ~]$ pip3.6 freeze Django==2.0.3 pytz==2018.3 You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgrading via the 'pip install --upgrade pip' command. [vagrant@localhost ~]$
Django と Django の依存関係にある pytz がインストールされました。
さっきから、pip を 9.0.3 にアップグレードしろ言われ続けていますので、アップグレードしますか ^ ^;
[vagrant@localhost ~]$ sudo pip3.6 install --upgrade pip Collecting pip Downloading pip-9.0.3-py2.py3-none-any.whl (1.4MB) 100% |████████████████████████████████| 1.4MB 520kB/s Installing collected packages: pip Found existing installation: pip 9.0.1 Uninstalling pip-9.0.1: Successfully uninstalled pip-9.0.1 Successfully installed pip-9.0.3 [vagrant@localhost ~]$
startproject
準備ができましたので、Django を始めましょう。まず最初は、Django のプロジェクトを作るために、startproject を実行します。
[vagrant@localhost ~]$ django-admin startproject mysite [vagrant@localhost ~]$
雛形が出力されました。(tree コマンドが入っていなかったので、別途インストールしています。)
[vagrant@localhost ~]$ tree . └── mysite ├── manage.py └── mysite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py 2 directories, 5 files [vagrant@localhost ~]$
startapp
次にアプリケーションの雛形を作りましょう。アプリケーションの雛形は、startapp です。
[vagrant@localhost django]$ cd mysite/ [vagrant@localhost mysite]$ python3.6 manage.py startapp polls [vagrant@localhost mysite]$ tree . ├── manage.py ├── mysite │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-36.pyc │ │ └── settings.cpython-36.pyc │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── polls ├── __init__.py ├── admin.py ├── apps.py ├── migrations │ └── __init__.py ├── models.py ├── tests.py └── views.py 4 directories, 14 files [vagrant@localhost mysite]$
runserver
それでは、今まで作った雛形だけのプログラムのページを確認して見ましょう。Django の開発用サーバーコマンドを実行してみます。
の前に、settings.py を一箇所修正します。
ALLOWED_HOSTS = ['*']
これをしないと、外部ホストを受け付けてくれません。
それでは runserver します。
[vagrant@localhost mysite]$ python3.6 manage.py runserver 0.0.0.0:8000 Performing system checks... System check identified no issues (0 silenced). You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. March 28, 2018 - 04:05:24 Django version 2.0.3, using settings 'mysite.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C.
そして、ブラウザで http://192.168.33.10:8000 にアクセスしてみます。
Django の起動を確認することができました。
まとめ
Django を始めるにあたりプロジェクトとアプリケーションを作成しました。
そして、Django の開発サーバー runserver を起動し、ページを確認しました。
これで、Django の開発を始める前の準備は完了です。