LoginSignup
10
11

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-02-03

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

プロジェクトディレクトリを作成する

以下、コメントをいただいたものを追記しました。

※最新の環境での動確はしていないため、動作保証できません。ご了承ください。

$ django-admin startproject mysite
を実行して
manage.pyがあるディレクトリでマイグレーションを実行する必要があります。

マイグレーション

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

Python基礎

こちらは環境構築とは関係ありません。

私の個人的な備忘録となります。

ご了承くださいませ。

Python2と3の違い

print 123  # Python2
print(123) # Python3

Python3で2の記法で記述すると SyntaxError: invalid syntax になった。

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/

Pythonでフィボナッチ数

言葉通りに実装すると再帰的になって、数が大きくなればなるほどつらい。

def fibonacci(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n - 1) + fibonacci(n - 2)

print fibonacci(10)

10
11
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11