前回php(laravel)環境でソーシャルログイン関連の記事を掲載しましたが、
今回はpython(Django)での方法です。
facebookの作業は同じになりますのでfacebookの部分は省きます。
単に開発中のサイトを外部に公開する方法として書きます。
python3仮想環境の作成
python3系がインストールされているものとして進めます。
まず環境を作成します。
●環境名は[social_test_env]
% python3 -m venv social_test_env
% cd social_test_env
% source bin/activate
% pip install --upgrade pip
Djangoの導入
Djangoのインストールとプロジェクトの作成。
●プロジェクト名は[social_test]
% pip install django
% django-admin startproject social_test
% cd social_test
一般サイトページ用のアプリ作成
% python manage.py startapp site_app
動作の設定
ここからコーディングです。
環境の設定
% vi social_test/settings.py
...
ALLOWED_HOSTS = ['*'] ←変更 '*'は外部からの接続をすべて許可
...
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
'site_app', ←追加
]
...
LANGUAGE_CODE = 'ja' ←変更
TIME_ZONE = 'Asia/Tokyo' ←変更
...
プロジェクトルーティング作成
% vi social_test/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('site_app.urls')),
]
site_appルーティング設定
% vi site_app/urls.py
from django.urls import path
from . import views
from django.conf.urls import include, url
urlpatterns = [
url('', views.IndexView.as_view(), name='index'),
]
site_appビュー作成
% vi site_app/views.py
from django.shortcuts import render
from django.views import generic
class IndexView(generic.TemplateView):
template_name = 'index.html'
site_appトップページ用テンプレート作成
% mkdir site_app/templates
% vi site_app/templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Djangoトップページ</h1>
<div>
</div>
</body>
</html>
ローカル実行
ここまでできたら実行してみます。
% python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 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.
February 14, 2020 - 10:10:19
Django version 3.0.3, using settings 'social_test.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
マイグレーションしていないのでメッセージが出ていますが、今回はテストなので問題ありません。
外部に公開する
phpの場合はlaravel valetに内蔵されていたshareコマンドですが、phythonの場合はこれに当たるものがないのでngrokを直接導入して使います。
ngrokのインストール
macでのインストール方法です、コマンド一発!簡単です。
% brew cask install ngrok
使い方
% ngrok http [ポート番号]
公開する
先程ローカル実行したときのメッセージ内に
Starting development server at http://127.0.0.1:8000/
という記述がありました。
この意味は
開発Webサーバを http://127.0.0.1 のサーバの 8000番ポートで開始した。
ということでしたので、
ngrok http 8000 とします。
新たなシェルを起動して実行します。
% ngrok http 8000
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 7 hours, 59 minutes
Version 2.3.35
Region United States (us)
Web Interface http://127.0.0.1:4041
Forwarding http://429b90ec.ngrok.io -> http://localhost:8000
Forwarding https://429b90ec.ngrok.io -> http://localhost:8000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
と表示されました。
ここで見るのは[http://429b90ec.ngrok.io ]と[https://429b90ec.ngrok.io]
の2つです。
違いはhttpかhttpsかだけでどちらでもアクセスできます。
ブラウザで https://429b90ec.ngrok.io を開いてみましょう
この様に表示されれば世界中からこのページを開くことができます。
FacebookのAPIを使ったテストにはhttps+グローバルなアドレスが欠かせませんので有効な手段かと思います。
Djangoでソーシャルログインを実行するには
django-debug-toolbar プラグインなどを導入する必要があります。
またの機会に書いていこうと思います。
[429b90ec]という文字はランダムでつけられたものです。
https://ngrok.com/pricing
こちらで登録するとサブドメインを自由につけることができます。
コメント