# [[Flask]]
![[Flask.svg]]
[site](https://flask.palletsprojects.com/en/stable/)
Flask is a lightweight web application framework for [[Python]] apps.
Here's an example of what a Flask wrapper might look like:
```python
from flask import Flask, request, jsonify
from two_player_dnd import create_game
app = Flask(__name__)
(
simulator,
protagonist_name,
storyteller_name,
protagonist_description,
storyteller_description,
detailed_quest
) = create_game()
@app.route("/play", methods=["POST"])
def play():
data = request.get_json()
message = data.get("message")
simulator.inject(protagonist_name, message)
name, response = simulator.step()
return jsonify({"speaker": name, "response": response})
@app.route("/", methods=["GET"])
@app.route("/", methods=["GET"])
def home():
return jsonify({
"protagonist": {
"name": protagonist_name,
"description": protagonist_description
},
"storyteller": {
"name": storyteller_name,
"description": storyteller_description
},
"quest": detailed_quest
})
if __name__ == "__main__":
app.run(debug=True, port=5050)
```
## References
- I used Flask for [my AI-based two-player D&D app](https://github.com/nicolevanderhoeven/asimov).
%%
# Excalidraw Data
## Text Elements
## Embedded Files
cc3e46ce86dc9eca3025f13696a94a2ac9b59bbb: [[logo-flask.png]]
## Drawing
```compressed-json
N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebQBGAGZtAAYaOiCEfQQOKGZuAG1wMFAwMogSbgghFIAhZgBlYgANLn5y2EQqwn1opHbITG5nHgBWFIGIGGGxieLIChJ1bgAW
AHY17R417d2d/cTJyQRCZWlucZTUlJvbu5uANknrZWDuObKBKFI2AGsEADCbHwbFIVW+1mYcFwgVy6U+EE0uGwv2UPyEHGIQJBYIkEI4UJhOSg8PKADNCPh8A1YG8JJJkRpAqSvj9/gB1JaSbjxSbMb5/BA0mB09CCDwsiDos4ccL5NC8+YQNjQ7BqaYKm6TdGY2XMeWoDhCKl8hAIYjcB6jRJrACck0YLHYXDQfCVjtYnAAcpwxDzEit4msVrbb
WtRpMhHBiLgoOaeeH4g94rbRg8dok3QjCMwACKZOMWtBkghhSZo4RwACSxANBQAupNNMJMQBRYLZXJ1xtKogcX7cI0m3tsFHx4ulhCTCnBGtVbDYRIIFYPMQADgexGwtoQeESKTGZKSD1tD1wtpWuB4yNtmlGt80mklzHc4lQRU+YEVn/i8x72cxLAqlwNJigAX3Af8IFwOA4BpWM31KSB1CyN8IBjUgB3aBhCAQChamRVEdSxYFQSqABiMkqOo0
kIGwERYSgKs430Gk2UBUjcXQcj4gQXjeNo+jSEY5isgIlEKwxEicXBcgCWhRjBIY4lRP0AAxSlqVpNDxUqbChJEli2MFTliGWV19OU3JVOM/5hVFCBdItSzhJUliACVhBlOUeRcwysgAeVVdUeS1Yo6KspiWLUzgoDU3B9EpDVUBWPy3KyGLcgaQgjDfHgPkgAz0v0AAVLAoAAQSIZQXXQYIyRJNLrKMqJSEq4S2AoY5cCLQ1jXwJqoqyVtMQqjq
upCXroPGpTXOarIxp+CgSvgNDiNol8fipZpuDWG5tHTFJrR4E6rQeMZsM24F8AATVWfajrXe8bQjcKjDYAxuCQyB6AIIQ31/MowMG1TPKkvUDSlFtnPCtESGy3LuHy7C4eIGkEDgC4UdIEgAFk2GIBARtwTRgl6kt8DLWGceksi0G+iBamBKbSGUJEAAoeCDaheG53m1h5q5RgASkldyEGUY0YSqVmOZ4fcefliZeAV1AhdF8DBtshAgqgZ0DSHA
bwrJchsnFwCcY4ZQvqVHISbJ7hvn+yZsCITG0CdqclQ4BK309yZhCgPs/dIf7NfCuwACtdzyBofbgfHCeJ0nx1QCmqfKZE9cYEqPvwG2EU6HTMmwPXOElej+QMFaujQQ3JhBMdycnacflYkuy9q9OvYRfBQkq0vCBzvPB368DwGBugZ3CL6ILAoA
```
%%