適当なフォームからPOST送信された内容をLINENotifyで転送するDjangoアプリケーションの備忘録。
あとで自分が使うための備忘録なので細かい解説はしてません。
あしからず。
もくじディレクトリ構成
大まかなディレクトリ構成はこんな感じ。
DjangoアプリケーションでLINENotifyを実行させる。
mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py app/ /* 一部省略 */ urls.py views.py
LINENotifyトークンの取得
下記サイトでNotifyを使用したいルームを選び、トークンを取得できます。
会員登録が必要ですが、方法は割愛。
だいたいリンクに沿って進めてけばできます。
DjangoのView
DjnagoでNotifyを使うためのView。
URLルーティングについては割愛。
今回は外部サイトのフォームで入力されたデータをPOSTで受け取って、LINENotifyに転送するアプリケーションです。
外部サイトからの受け取りなので、CSRFトークンを無効にしてます。
これでCSRFトークンを無効化できます。
from django.views.decorators.csrf import csrf_exempt @csrf_exempt
あとはDjnagoでPOSTの情報を受け取る方法です。
getメソッドで引数にinputのname情報を与えてあげるとデータが手に入ります。
余談ですが、チェックボックスフォームみたいに、配列形式で複数の情報が送られてくる場合は、getlistメソッドを使います。
name = request.POST.get('name') email = request.POST.get('email') subject = request.POST.get('subject') message = request.POST.get('message')
とりあえずコード全文。
from django.shortcuts import redirect import requests from django.views.decorators.csrf import csrf_exempt @csrf_exempt def mailapp(request): if request.POST: name = request.POST.get('name') email = request.POST.get('email') subject = request.POST.get('subject') message = request.POST.get('message') url = "https://notify-api.line.me/api/notify" token = "NotifyのAPIトークン" headers = {"Authorization": "Bearer " + token} messages = 'n' + '名前:' + name +'n' + 'メール:' + email + 'n' + '件名:' + subject + 'n' + '本文:' + message payload = {"message": messages} r = requests.post(url, headers=headers, params=payload) return redirect(元サイト)
まとめ
LINENotifyでフォームのPOSTデータを受け取るプログラムは、簡易的なサイトを作るときに使うかなと思ったので、簡単にまとめました。
たった数行でNotifyへの転送処理が実装できるのは素直に感動ですね。
ただ、このためにいちいちサーバー建てるのは面倒なんで、そのうちサーバーレスで書こうかなと思ってます。