Hallo! Ich werde zum ersten Mal bei Qiita posten, also stellen Sie sich bitte kurz vor. Ich bin ein Student, der eine bestimmte Abteilung für Informationszusammenarbeit besucht. (Auch wenn du etwas sagst ...) Meine Lieblingsbrowser sind Firefox und Edge (Chromium).
Übrigens werden wir alle in der zweiten Hälfte der ersten Klasse ein Team entwickeln, das Django im Unterricht einsetzt. Ich habe letztes Jahr einen LINE-Bot erstellt, aber zu diesem Zeitpunkt habe ich keine gute Möglichkeit gefunden, Flex-Nachrichten der LINE-Messaging-API dynamisch mit Django zu verarbeiten. Deshalb habe ich auch meine persönlichen Best Practices aufgeschrieben. Ich werde es auch hier schreiben. Siehe hier für Flex Message.
Django bietet eine Vorlagensprache namens Django Template Language. Darüber hinaus ist Flex Message der LINE Messaging API im JSON-Format geschrieben. Mit ihnen möchte ich den Ansatz verfolgen, Informationen in eine JSON-Vorlagendatei einzubetten und eine Flex-Nachricht zu senden, wenn der Django-Server eine Nachricht sendet. (Es ist das gleiche wie beim Umgang mit HTML-Dateien in Django)
Ich denke, dass Sie normalerweise render ()
usw. verwenden, um Informationen in eine HTML-Datei einzubetten und mit Django zu senden, aber da dies für die HTTP-Antwort ist, werde ich sie dieses Mal nicht verwenden. Verwenden Sie stattdessen "render_to_string ()".
Nehmen wir dieses Mal, wie in der Abbildung unten gezeigt, einen Bot, der den gesendeten Satz und das Datum am Beispiel von Flex Message anzeigt. Der vollständige Text von message.json und views.py, der im Beispiel verwendet wird, befindet sich in GitHub Gist.
Dies ist eine leicht modifizierte Version der offiziellen LINE Beispielcode für Django.
import json
from django.conf import settings
from django.views.decorators.csrf import csrf_exempt
from django.template.loader import render_to_string
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.models import (
MessageEvent, TextMessage, FlexSendMessage, BubbleContainer
)
#settings.Holen Sie sich Zugriffstoken usw. von py (hier gefällt Ihnen)
line_bot_api = LineBotApi(channel_access_token=settings.LINE_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(channel_secret=settings.LINE_CHANNEL_SECRET)
#(Kürzung)
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
msg_text=event.message.text
today_date = datetime.datetime.now()
msg = render_to_string("message.json", {"text": msg_text, "date": today_date})
line_bot_api.reply_message(
event.reply_token,
FlexSendMessage(alt_text = msg_text, contents = BubbleContainer.new_from_json_dict(json.loads(msg)))
)
** Das Wichtigste ist hier **
msg_text=event.message.text
today_date = datetime.datetime.now()
msg = render_to_string("message.json", {"text": msg_text, "date": today_date})
Der in LINE eingegebene msg_text
befindet sich im {{text}}
Teil von message.json unter dem Vorlagenordner, und das aktuelle Datum und die aktuelle Uhrzeit befinden sich im{{date}}
Teil. today_dateist jetzt mit
render_to_string ()` gefüllt.
Dies sind meine persönlichen Best Practices, wenn ich in Django dynamisch mit LINE Flex-Nachrichten arbeite. Ich hoffe, Sie finden es nützlich.
Recommended Posts