def select_template(template_name_list, using=None):
    """
    Loads and returns a template for one of the given names.
    Tries names in order and returns the first template found.
    Raises TemplateDoesNotExist if no such template exists.
    """
    if isinstance(template_name_list, six.string_types):
        raise TypeError(
            'select_template() takes an iterable of template names but got a '
            'string: %r. Use get_template() if you want to load a single '
            'template by name.' % template_name_list
        )

    engines = _engine_list(using)
    for template_name in template_name_list:
        for engine in engines:
            try:
                return engine.get_template(template_name)
            except TemplateDoesNotExist as e:
                pass

    if template_name_list:
        raise TemplateDoesNotExist(', '.join(template_name_list))
    else:
        raise TemplateDoesNotExist("No template names provided")
Loads and returns a template for one of the given names.
    Tries names in order and returns the first template found.
    Raises TemplateDoesNotExist if no such template exists.