Below is a SubmitTextInput4 widget, which sends text data.

The SubmitTextInput4 widget has been given the name 'settext', and the field containing the sent data has name 'input_text'. Press Submit to send the text.

Your input:

The table below listing Responders is a ShowResponders widgit. On submitting text using the form above you should be able to see which Responder was called. The AllowStore responder calls the Python function that deals with the submitted data.

This table lists the Responders called to produce this page:

skiwidgets,7702SubmitDataSets up title and widget description
skiwidgets,7704This pagedebug_tools.ShowResponders template

This is a ShowCallData widget, which displays the contents of the skicall.call_data dictionary.

{}

Below is the Python file which populates this page.

import os

from skipole import FailPage, GoTo, ValidateError, ServerError, ServeFile, PageData, SectionData


def index(skicall):
    "Called by a SubmitData responder, and sets up the page"

    # the title and widget decription is in section 'header' which contains a
    # HeadText widget with name 'title' and a TextBlockPara widget with name 'widgetdesc'
    # It also has a ButtonLink2 widget with name 'tomodule'
    headersection = SectionData('header')
    headersection['title', 'large_text'] = 'ShowResponders'
    # A textblock contains the widget description
    ref = "widgets.debug_tools.ShowResponders"
    headersection['widgetdesc','textblock_ref'] = ref
    headersection['widgetdesc','text_refnotfound'] = f'Textblock reference {ref} not found'
    # link to this widgets module page
    headersection['tomodule','button_text'] = "Module: debug_tools"
    headersection['tomodule','link_ident'] = skicall.makepath('debug_tools')
    skicall.update(headersection)

    # this code file contents is placed in section 'codefile' which contains a
    # PreText widget with name 'pretext'
    codesection = SectionData('codefile')
    code = os.path.realpath(__file__)
    with open(code) as f:
        codesection['pretext', 'pre_text'] = f.read()
    skicall.update(codesection)


def respond(skicall):
    """Responds to submission from the SubmitTextInput4 widget form.
       Called by an AllowStore responder with general_json page as its
       target so the result widget is updated via a JSON responce,
       and dynamically updates the page."""

    if ('settext', 'input_text') not in skicall.call_data:
        raise FailPage(message="No submission received")

    value = skicall.call_data['settext', 'input_text']
    pd = PageData()
    pd['result','para_text'] = f"Received: {value}"
    skicall.update(pd)