# Welcome to web.py’s documentation!

Contents:

- Accessing User Input
  - GET
  - POST
  - Multiple inputs with same name
  - File uploads
- Accessing the database
  - Create database object
    - Multiple databases
  - Operations
    - Inserting
    - Selecting
    - Updating
    - Deleting
    - Multiple Inserts
    - Advanced querying
    - Transactions
- Templating
  - Variable substitution
  - Newline suppression
  - Expressions
  - Comments
  - Code
  - Python integration
  - Turning Off Filter
  - Including / nesting templates
  - Escaping
- Deploying web.py applications
  - FastCGI
    - Configuring lighttpd
  - nginx + Gunicorn
- Development setup
- web.py API
  - web.application
    - `application`
    - `auto_application`
    - `autodelegate()`
    - `loadhook()`
    - `subdir_application`
    - `subdomain_application`
    - `unloadhook()`
  - web.db
    - `DB`
    - `SQLLiteral`
    - `SQLParam`
    - `SQLQuery`
    - `TransactionError`
    - `UnknownDB`
    - `UnknownParamstyle`
    - `database()`
    - `reparam()`
    - `sqllist()`
    - `sqlliteral`
    - `sqlors()`
    - `sqlparam`
    - `sqlquote()`
  - web.net
    - `htmlquote()`
    - `htmlunquote()`
    - `httpdate()`
    - `parsehttpdate()`
    - `urlquote()`
    - `validaddr()`
    - `validip()`
    - `validip6addr()`
    - `validipaddr()`
    - `validipport()`
    - `websafe()`
  - web.form
    - `AttributeList`
    - `Button`
    - `Checkbox`
    - `Color`
    - `Datalist`
    - `Date`
    - `Dropdown`
    - `Email`
    - `File`
    - `Form`
    - `GroupedDropdown`
    - `Hidden`
    - `Input`
    - `Number`
    - `Password`
    - `Radio`
    - `Range`
    - `Search`
    - `Telephone`
    - `Textarea`
    - `Textbox`
    - `Time`
    - `Url`
  - web.http
    - `changequery()`
    - `expires()`
    - `lastmodified()`
    - `modified()`
    - `prefixurl()`
    - `profiler()`
    - `url()`
  - web.session
    - `DBStore`
    - `DiskStore`
    - `MemoryStore`
    - `Session`
    - `SessionExpired`
    - `Store`
  - web.template
    - `ParseError`
    - `Render`
    - `SecurityError`
    - `frender()`
    - `render`
    - `test()`
  - web.utils
    - `CaptureStdout`
    - `Counter`
    - `IterBetter`
    - `Memoize`
    - `Profile`
    - `Storage`
    - `ThreadedDict`
    - `autoassign()`
    - `capturestdout`
    - `commify()`
    - `cond()`
    - `counter`
    - `dateify()`
    - `datestr()`
    - `denumify()`
    - `dictadd()`
    - `dictfind()`
    - `dictfindall()`
    - `dictincr()`
    - `dictreverse()`
    - `group()`
    - `intget()`
    - `iterbetter`
    - `iterview()`
    - `listget()`
    - `lstrips()`
    - `memoize`
    - `nthstr()`
    - `numify()`
    - `profile`
    - `re_subm()`
    - `requeue()`
    - `restack()`
    - `rstrips()`
    - `safeiter()`
    - `safestr()`
    - `safeunicode()`
    - `safewrite()`
    - `sendmail()`
    - `storage`
    - `storify()`
    - `strips()`
    - `threadeddict`
    - `timelimit()`
    - `to36()`
    - `tryall()`
    - `uniq()`
  - web.webapi
    - `Accepted`
    - `BadRequest`
    - `Conflict`
    - `Created`
    - `Forbidden`
    - `Found`
    - `Gone`
    - `HTTPError`
    - `InternalError()`
    - `NoContent`
    - `NoMethod`
    - `NotAcceptable`
    - `NotFound()`
    - `NotModified`
    - `OK`
    - `PreconditionFailed`
    - `Redirect`
    - `SeeOther`
    - `TempRedirect`
    - `Unauthorized`
    - `UnavailableForLegalReasons()`
    - `UnsupportedMediaType`
    - `accepted`
    - `badrequest`
    - `conflict`
    - `cookies()`
    - `created`
    - `data()`
    - `debug()`
    - `forbidden`
    - `found`
    - `gone`
    - `header()`
    - `input()`
    - `internalerror()`
    - `nocontent`
    - `nomethod`
    - `notacceptable`
    - `notfound()`
    - `notmodified`
    - `ok`
    - `preconditionfailed`
    - `redirect`
    - `seeother`
    - `setcookie()`
    - `tempredirect`
    - `unauthorized`
    - `unavailableforlegalreasons()`
    - `unsupportedmediatype`

# Getting Started

Building webapps with web.py is easy. To get started, save the following code as say, hello.py and run it with python hello.py. Now point your browser to http://localhost:8080/ which responds you with ‘Hello, world!’. Hey, you’re done with your first program with with web.py - with just 8 lines of code!

    import web

    urls = ("/.*", "hello")
    app = web.application(urls, globals())

    class hello:
        def GET(self):
            return 'Hello, world!'

    if __name__ == "__main__":
        app.run()

# Indices and tables

- Index

- Module Index

- Search Page