code: def _render(template, render, renderer, template_dict, opts):
      '''
      Render a template
      '''
      if render:
          if template_dict is None:
              template_dict = {}
          if not renderer:
              renderer = opts.get('renderer', 'jinja|yaml')
          rend = salt.loader.render(opts, {})
          blacklist = opts.get('renderer_blacklist')
          whitelist = opts.get('renderer_whitelist')
          ret = compile_template(template, rend, renderer, blacklist, whitelist, **template_dict)
          if salt.utils.stringio.is_readable(ret):
              ret = ret.read()
          if six.text_type(ret).startswith('#!') and not six.text_type(ret).startswith('#!/'):
              ret = six.text_type(ret).split('\n', 1)[1]
          return ret
      with salt.utils.files.fopen(template, 'r') as fh_:
          return fh_.read(f _render(template, render, renderer, template_dict, opts):
      '''
      Render a template
      '''
      if render:
          if template_dict is None:
              template_dict = {}
          if not renderer:
              renderer = opts.get('renderer', 'jinja|yaml')
          rend = salt.loader.render(opts, {})
          blacklist = opts.get('renderer_blacklist')
          whitelist = opts.get('renderer_whitelist')
          ret = compile_template(template, rend, renderer, blacklist, whitelist, **template_dict)
          if salt.utils.stringio.is_readable(ret):
              ret = ret.read()
          if six.text_type(ret).startswith('#!') and not six.text_type(ret).startswith('#!/'):
              ret = six.text_type(ret).split('\n', 1)[1]
          return ret
      with salt.utils.files.fopen(template, 'r') as fh_:
          return fh_.read()
docs: Render a template