What’s the simplest way to get started in Pyramid? A single-file module. No packages, setup.py, or other machinery.
Microframeworks are all the rage these days. “Microframework” is a marketing term, not a technical one. They have a low mental overhead: they do so little, the only things you have to worry about are your things.
Pyramid is special because it can act as a single-file module microframework. You have a single Python file that can be executed directly by Python. But Pyramid also scales to the largest of applications.
Make sure you have followed the steps in Python Setup.
Create a directory for this step:
(env33)$ mkdir step01; cd step01
Copy the following into helloworld.py:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
def hello_world(request):
return Response('Hello')
def main():
config = Configurator()
config.add_route('hello', '/')
config.add_view(hello_world, route_name='hello')
app = config.make_wsgi_app()
return app
if __name__ == '__main__':
app = main()
server = make_server('0.0.0.0', 6547, app)
print ('Starting up server on http://localhost:6547')
server.serve_forever()
|
Run the application:
(env33)$ python3.3 helloworld.py
Open http://127.0.0.1:6547/ in your browser.
The main() function is run from the if at the bottom, which makes a WSGI application, hands it to an HTTP server (the pure-Python server in the Python standard library), and starts listening.
This single-file module does quite a bit for so few lines, thus making it spiritually similar to microframeworks. A view function is added to the configuration. When called, the view returns a response.
The hello_world view is mapped to a route which is matched to the root URL of the application.
Why do we do this:
print ('Starting up server on http://localhost:6547')
...instead of:
print 'Starting up server on http://localhost:6547'
What happens if you return a string of HTML? A sequence of integers?
Put something invalid, such as print xyz, in the view function. Kill your python helloworld.py and restart, then reload your browser. See the exception in the console?