Consider an application like the popview example from the main Albatross documentation. This displays a table with a list of email messages in it. You might want to add a "Delete" checkbox to each message, and a "Delete Selected" button which would allow the user to mark and delete many messages with the one operation. Here is a good way to do that in Albatross.

First, the HTML template creates a form, containing a table with each email message in it, and the Delete Selected button:

<al-form method="post">
        <tr><th>Delete?</th><th>Subject</th>....</tr>
        <al-for iter="e" expr="messages">
            <tr>
                <td>
                    <al-input type="checkbox" name="del_msgs" 
                          valueexpr="e.value().get_message_id()" list>
                </td>
                <td><al-value expr="e.value().subject()"/></td>
                # .....
            </tr>
        </al-for>
        <al-input type="submit" name="delete" value="Delete Selected">
</al-form>

Note that this creates a whole bunch of checkboxes, one for each email message. All these checkboxes have the same name ("del_msgs") but different value (set to the message_id of the respective message). In the page_process() function, all these checkboxes will be represented as a single variable (ctx.locals.del_msgs) which will be a vector containing the value (i.e. the message_id) for all the selected checkboxes.

The "list" attribute to the al-input ensures that it will be a vector, even if no (or 1) checkboxes are selected.

Then, in the page_process function, you can do something like this:

def page_process(self, ctx):
    if ctx.req_equals('delete'):  # User pushed the "Delete Selected" button
        for id in ctx.locals.del_msgs:
            self.mbox.delete_message(id)