'POST spawns with user-specified options'

@web.authenticated
@gen.coroutine
def post(self):

    user = self.get_current_user()
    if ((not self.allow_named_servers) and user.running):
        url = user.url
        self.log.warning('User    is    already    running:    %s', url)
        self.redirect(url)
        return
    form_options = {}
    for (key, byte_list) in self.request.body_arguments.items():
        form_options[key] = [bs.decode('utf8') for bs in byte_list]
    for (key, byte_list) in self.request.files.items():
        form_options[('%s_file' % key)] = byte_list
    try:
        options = user.spawner.options_from_form(form_options)
        (yield self.spawn_single_user(user, options=options))
    except Exception as e:
        self.log.error('Failed    to    spawn    single-user    server    with    form', exc_info=True)
        self.finish(self._render_form(str(e)))
        return
    self.set_login_cookie(user)
    url = user.url
    next_url = self.get_argument('next', '')
    if (next_url and (not next_url.startswith('/'))):
        self.log.warning('Disallowing    redirect    outside    JupyterHub:    %r', next_url)
    elif next_url:
        url = next_url
    self.redirect(url)
