この記事は3年以上前に書かれた記事で内容が古い可能性があります
DjangoでSNSログイン機能を実装させる1(コンテナ作成と起動まで)
2019-02-12
こういう画面で、通常ログインではなくて、SNSアカウントでログインができるように実装したい 今回は、GithubとTwitterアカウントでログインできるようにする 以下の記事を参考に進める How to Add Social Login to Django まずはDockerでコンテナを立ち上げる ほとんどこちらと同じ話 Django on Docker超入門1(ロケットの画面まで) 適当なワークディレクトリで以下のようにファイルを作成する% tree . ├── Dockerfile ├── docker-compose.yml └── requirements.txt 0 directories, 3 files各ファイルの中身は以下の通り
% cat Dockerfile FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/% cat requirements.txt Django psycopg2% cat docker-compose.yml version: '3' services: db: image: postgres web: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - dbコンテナを作成 mysiteはサイトの名前なので任意の値
% sudo docker-compose run web django-admin.py startproject mysite .インデントがきちんとしていないと以下のようなエラーが出るので注意
% sudo docker-compose run web django-admin.py startproject mysite . ERROR: In file './docker-compose.yml', service must be a mapping, not a NoneType.すると、以下のようなディレクトリ構成になる
% tree . ├── Dockerfile ├── docker-compose.yml ├── manage.py ├── mysite │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── requirements.txt 1 directory, 8 filessettings.pyの編集をしていく
% cp mysite/settings.py mysite/settings.py.20190210 % vim mysite/settings.py % diff mysite/settings.py mysite/settings.py.20190210 28c28 < ALLOWED_HOSTS = ['0.0.0.0','127.0.0.1'] --- > ALLOWED_HOSTS = [] 78,82c78,79 < 'ENGINE': 'django.db.backends.postgresql', < 'NAME': 'postgres', < 'USER': 'postgres', < 'HOST': 'db', < 'PORT': 5432, --- > 'ENGINE': 'django.db.backends.sqlite3', > 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),コンテナを立ち上げる
% docker-compose up ... web_1 | Starting development server at http://0.0.0.0:8000/ web_1 | Quit the server with CONTROL-C.ここからはコンテナに入って作業する
% docker exec -it mysite_web_1 bash #DBのマイグレート
# python manage.py migrateスーパーユーザーの作成
# python manage.py createsuperuser ... Username (leave blank to use 'root'): Email address: root@example.com Password: Password (again): This password is too common. Bypass password validation and create user anyway? [y/N]: y Superuser created successfully. #これでアクセスできるようになる
http://0.0.0.0:8000
http://0.0.0.0/admin:8000
続きはこちら
DjangoでSNSログイン機能を実装させる2(Githubログイン機能実装まで)