Edited at

venvでDjangoの環境を作成してみたった(Python3.3以降)


venvとは?

venv: Python 仮想環境管理によれば、


venv は virtualenv が Python 3.3 から標準機能として取り込まれたもの


らしい。


前提

以下のエントリーにてPython3系のインストールまでやってください。

Vagrant + Ubuntu + VirtualBoxでPythonの環境構築したった


venvでPython環境を構築する


Django Girls Tutorial

現在Rails Tutorialのように日本語でDjangoを学べるネット教材で人気がありそうなのは以下

Django Girls Tutorial

まずは上記にしたがってコマンドを実行していく。


専用の環境を作成する

python3 -m venv myvenv


アクティベートする

source myvenv/bin/activate


venv が起動すると、プロンプトの行頭に(myvenv)が現れます。


※必要ならpipをインストール

(私の環境ではすでにインストールされていた模様、、、たぶんvenvのpipじゃないと思うんだけど、この辺よくわかってない)

python3 -m pip install --upgrade pip # 私の環境ではすでにあるぜ!って言われてアンスコしてた、、、


設定ファイルを作成する

設定ファイル作成

touch requirements.txt

インストールしたいDjangoのバージョンを指定する

echo Django~=2.0.6 >> requirements.txt

確認する

cat requirements.txt


Djangoをインストールする

pip install -r requirements.txt


マイグレーション

python manage.py migrate


サーバ起動

python manage.py runserver 0.0.0.0:8080


トラブルシューティング

Invalid HTTP_HOST header: '192.168.33.10:8080'. You may need to add '192.168.33.10' to ALLOWED_HOSTS.

mysite/settings.py にて以下を記載する。

ALLOWED_HOSTS = ['192.168.33.10']


完成

http://192.168.33.10:8080/にアクセスする。

※vagrantの public_network とかのIPを見てください。

  config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

config.vm.network "forwarded_port", guest: 8000, host: 9080, host_ip: "127.0.0.1"
config.vm.network "private_network", ip: "192.168.33.10"

スクリーンショット 2019-02-03 17.37.24.png

こんな感じになれば成功!!


サーバを停止する

以下の画面にて ctrl + C するとコマンド受付状態に戻る。

ちなみにサーバ起動状態は (サーバ)コンソール とかって言う。

(myvenv) vagrant@ubuntu-xenial:~/tmp/djangogirls$ python manage.py runserver 0.0.0.0:8080

Performing system checks...

System check identified no issues (0 silenced).
February 03, 2019 - 17:36:41
Django version 2.0.10, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8080/
Quit the server with CONTROL-C.
[03/Feb/2019 17:37:21] "GET / HTTP/1.1" 200 16510


virtualenvをディアクティーベート(無効化)する

サーバ停止できたらvenvも止めておく。

環境が消えるわけではない!(電源を消しておくイメージ!)

deactivate


その他


dictionary

ディクショナリーというオブジェクトの型の名前。

辞書型と呼ぶ。

このオブジェクトはキーと値のペアの集合で表される。

Rubyで言うところのHash。


setdefaultメソッド

要素の追加

mydict = {"ai":1, "apple":2, "attribute":3}

mydict.setdefault("authenticate", 4)
print(mydict) # => {"ai":1, "apple":2, "attribute":3, "authenticate": 4}


popメソッド

要素の削除

# (続き)

mydict.pop("apple")
print(mydict) # => {"ai":1, "attribute":3, "authenticate": 4}


clearメソッド

要素の一括削除

# (続き)

mydict.clear()
print(mydict) # => {}


条件分岐

"else if〜"みたいな書き方は elif と書く。

Rubyなら elsif だし言語ごとに色がある。

if name == 'Ola':

print('Hi Ola!')
elif name == 'Sonja':
print('Hi Sonja!')
else:
print('Hi anonymous!')


繰り返し(ループ)

for i in range(1, 6):

print(i)


https://tutorial.djangogirls.org/ja/python_introduction/