code: async def index(request):
      
      # {% if database.is_none and example.is_message_board %}
      # app.router allows us to generate urls based on their names,
      # see http://aiohttp.readthedocs.io/en/stable/web.html#reverse-url-constructing-using-named-resources
      message_url = request.app.router['messages'].url_for()
      ctx = dict(
          title=request.app['name'],
          styles_css_url=request.app['static_root_url'] + '/styles.css',
          content="""\
    <p>Success! you've setup a basic aiohttp app.</p>
    <p>To demonstrate a little of the functionality of aiohttp this app implements a very simple message board.</p>
    <b>
      <a href="{message_url}">View and add messages</a>
    </b>""".format(message_url=message_url)
      )
      # {% else %}
      ctx = dict(
          title=request.app['name'],
          styles_css_url=request.app['static_root_url'] + '/styles.css',
          content="<p>Success! you've setup a basic aiohttp app.</p>",
      )
      # {% endif %}
      # with the base web.Response type we have to manually set the content type, otherwise text/plain will be used.
      return web.Response(text=BASE_PAGE.format(**ctx), content_type='text/html')
docs: This is the view handler for the "/" url.
  
      **Note: returning html without a template engine like jinja2 is ugly, no way around that.**
  
      :param request: the request object see http://aiohttp.readthedocs.io/en/stable/web_reference.html#request
      :return: aiohttp.web.Response object