この記事は3年以上前に書かれた記事で内容が古い可能性があります
DjangoでChatアプリを作る1(ASGI/Channelsで立ち上げるまで)
2019-02-18
DjangoでSNSログイン機能を実装させる4(TwitterLogin実装まで)の続き
こちら を参考に進める
https://channels.readthedocs.io/en/latest/installation.html
Tutorialと違うのは、コンテナ上で動かしているところと、
login appと一緒のサイトで作っているところ
requirements.txtにchannelsを追記する(★部分追記)
% cat requirements.txt Django psycopg2 python-decouple social-auth-app-django channels ★
dockerを立ち上げる
※すでに立ち上がっている場合はdocker stopで止めておく
% docker-compose build
Successfully …で終わればOK
% docker-compose up
以下が出力されればOK
web_1 | Django version 2.1.7, using settings 'mysite.settings' web_1 | Starting development server at http://0.0.0.0:8000/ web_1 | Quit the server with CONTROL-C.
別タブを開いて作業する
mysite/settings.pyにchannels追加(★部分追記)
% vim mysite/settings.py
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'social_django', 'mysite.login', 'channels', ★ ]
このままだと以下のエラーが出るので、
web_1 | CommandError: You have not set ASGI_APPLICATION, which is needed to run the server. mysite_web_1 exited with code 1
以下を追加する
これと
% cat mysite/routing.py from channels.routing import ProtocolTypeRouter application = ProtocolTypeRouter({ # Empty for now (http->django views is added by default) })
これと
% cat mysite/asgi.py """ ASGI entrypoint. Configures Django and then runs the application defined in the ASGI_APPLICATION setting. """ import os import django from channels.routing import get_default_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") django.setup() application = get_default_application()
settijngs.pyには最終行に追記する
% vim mysite/settings.py
ASGI_APPLICATION = "mysite.routing.application"
これで再び立ち上がる
% docker-compose up
web_1 | Starting ASGI/Channels version 2.1.7 development server at http://0.0.0.0:8000/ web_1 | Quit the server with CONTROL-C.
ちょっと脱線、オフラインで作業するとき、0.0.0.0だと繋げなかったので、
localhostも追記しておく
% vim mysite/settings.py
ALLOWED_HOSTS = ['0.0.0.0','127.0.0.1','localhost']
DjangoでChatアプリを作る2(What chat room would you like to enter?の画面が表示されるまで)に続く