diff options
| author | Paul Everitt <paul@agendaless.com> | 2013-08-06 10:12:42 -0400 |
|---|---|---|
| committer | Paul Everitt <paul@agendaless.com> | 2013-08-06 10:12:42 -0400 |
| commit | 71b83e5ea328b654f8463f567ecc054a55a7a90b (patch) | |
| tree | 7ba977a3592446142d5c4ea180d7b71bc2f31dbc | |
| parent | c3e696a0cfb839c97e6c20277dc797dbd5349730 (diff) | |
| download | pyramid-71b83e5ea328b654f8463f567ecc054a55a7a90b.tar.gz pyramid-71b83e5ea328b654f8463f567ecc054a55a7a90b.tar.bz2 pyramid-71b83e5ea328b654f8463f567ecc054a55a7a90b.zip | |
Move sample code into subdirectories. Add sections for requests and views.
| -rw-r--r-- | docs/getting_started/about_guide.rst | 14 | ||||
| -rw-r--r-- | docs/getting_started/index.rst | 80 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance.rst | 180 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/hello_world/app.py (renamed from docs/getting_started/quick_glance/app1.py) | 2 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/jinja2/app.py (renamed from docs/getting_started/quick_glance/app3.py) | 2 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/jinja2/hello_world.jinja2 (renamed from docs/getting_started/quick_glance/app3.jinja2) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/json/app.py (renamed from docs/getting_started/quick_glance/app5.py) | 2 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/CHANGES.txt (renamed from docs/getting_started/quick_glance/hello_world/CHANGES.txt) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/MANIFEST.in (renamed from docs/getting_started/quick_glance/hello_world/MANIFEST.in) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/README.txt (renamed from docs/getting_started/quick_glance/hello_world/README.txt) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/development.ini (renamed from docs/getting_started/quick_glance/hello_world/development.ini) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/__init__.py (renamed from docs/getting_started/quick_glance/hello_world/hello_world/__init__.py) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/locale/de/LC_MESSAGES/hello_world.mo (renamed from docs/getting_started/quick_glance/hello_world/hello_world/locale/de/LC_MESSAGES/hello_world.mo) | bin | 460 -> 460 bytes | |||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/locale/de/LC_MESSAGES/hello_world.po (renamed from docs/getting_started/quick_glance/hello_world/hello_world/locale/de/LC_MESSAGES/hello_world.po) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/locale/fr/LC_MESSAGES/hello_world.mo (renamed from docs/getting_started/quick_glance/hello_world/hello_world/locale/fr/LC_MESSAGES/hello_world.mo) | bin | 461 -> 461 bytes | |||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/locale/fr/LC_MESSAGES/hello_world.po (renamed from docs/getting_started/quick_glance/hello_world/hello_world/locale/fr/LC_MESSAGES/hello_world.po) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/locale/hello_world.pot (renamed from docs/getting_started/quick_glance/hello_world/hello_world/locale/hello_world.pot) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/models.py (renamed from docs/getting_started/quick_glance/hello_world/hello_world/models.py) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/static/favicon.ico (renamed from docs/getting_started/quick_glance/hello_world/hello_world/static/favicon.ico) | bin | 1406 -> 1406 bytes | |||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/static/logo.png (renamed from docs/getting_started/quick_glance/hello_world/hello_world/static/logo.png) | bin | 6641 -> 6641 bytes | |||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/static/pylons.css (renamed from docs/getting_started/quick_glance/hello_world/hello_world/static/pylons.css) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/templates/mytemplate.jinja2 (renamed from docs/getting_started/quick_glance/hello_world/hello_world/templates/mytemplate.jinja2) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/tests.py (renamed from docs/getting_started/quick_glance/hello_world/hello_world/tests.py) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/hello_world/views.py (renamed from docs/getting_started/quick_glance/hello_world/hello_world/views.py) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/message-extraction.ini (renamed from docs/getting_started/quick_glance/hello_world/message-extraction.ini) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/setup.cfg (renamed from docs/getting_started/quick_glance/hello_world/setup.cfg) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/package/setup.py (renamed from docs/getting_started/quick_glance/hello_world/setup.py) | 0 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/requests/app.py | 16 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/routing/app.py (renamed from docs/getting_started/quick_glance/app2.py) | 2 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/view_classes/app.py (renamed from docs/getting_started/quick_glance/app6.py) | 2 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/views/app.py | 10 | ||||
| -rw-r--r-- | docs/getting_started/quick_glance/views/views.py | 7 | ||||
| -rw-r--r-- | docs/getting_started/scaffolds.rst | 9 | ||||
| -rw-r--r-- | docs/getting_started/static_assets/app.py (renamed from docs/getting_started/quick_glance/app4.py) | 2 | ||||
| -rw-r--r-- | docs/getting_started/static_assets/hello_world.jinja2 (renamed from docs/getting_started/quick_glance/app4.jinja2) | 0 | ||||
| -rw-r--r-- | docs/index.rst | 24 |
36 files changed, 199 insertions, 153 deletions
diff --git a/docs/getting_started/about_guide.rst b/docs/getting_started/about_guide.rst deleted file mode 100644 index 812b07457..000000000 --- a/docs/getting_started/about_guide.rst +++ /dev/null @@ -1,14 +0,0 @@ -================ -About This Guide -================ - - -- Chapter titles are meaningful - -- Each chapter is autonomous, no one-big-application here - -- Interlinking - -- Reporting bugs or ideas - -- SO for questions
\ No newline at end of file diff --git a/docs/getting_started/index.rst b/docs/getting_started/index.rst index 6396a8e6c..61964056e 100644 --- a/docs/getting_started/index.rst +++ b/docs/getting_started/index.rst @@ -4,80 +4,25 @@ Getting Started With Pyramid Welcome to Pyramid, the Python web framework that lets you start small and finish big. Whether you are new to Python web development or you're -an experienced developer that wants a quick look at the major +an experienced developer wanting a quick look at the major features, this guide provides a convenient entry point with independent chapters for each topic. -:doc:`quick_glance` -=================== - -Python web development is a very big topic. Wouldn't it be great to -have a quick overview, end-to-end, just to get oriented? This chapter -shows "a little about a lot", full of short code snippets and links to -deeper treatment of topics. Additionally, we showcase some facilities -that make Pyramid unique for "applications with ambition." - -:doc:`about_guide` -================== - -Now that we have set the scene, we explain the purpose of this guide -(and non-purpose), showing how it is organized. - - -:doc:`scaffolds` +About This Guide ================ -Pyramid projects are organized using normal Python facilities for -projects. Normal, though, is in the eye of the beholder. This chapter -shows how to use scaffolds to automate the boilerplate and quickly -start development of a new project. - -Topics: scaffolds, packaging, virtual environments - -:doc:`configuration` -==================== - - -:doc:`routes` -============= - -:doc:`views` -============ - -:doc:`templates` -================ - -:doc:`static_assets` -==================== - -:doc:`testing` -============== - -:doc:`forms` -============ - -:doc:`databases` -================ - -:doc:`security` -=============== - -:doc:`json` -=========== - - -:doc:`sessions` -=============== - -:doc:`internationalization` -=========================== - +Evaluators want to jump right into a particular topic. This *Getting +Started* guide is structured with chapter titles that focuses on a +particular aspect of web development. Each chapter is autonomous and +you don't have to follow from beginning to end. -:doc:`special_views` -==================== +By definition, each topic is covered at a high level. To make it easy +to get to in-depth treatment, the chapters provide interlinking with +the full treatment in the :ref:`html_narrative_documentation`. -:doc:`top_ten` -============== +This guide is part of the official documentation. If you find a bug, +you can report it using the same facilities as the described in the +software's :ref:`support-and-development`. Contents ======== @@ -86,7 +31,6 @@ Contents :maxdepth: 2 quick_glance - about_guide scaffolds configuration routes diff --git a/docs/getting_started/quick_glance.rst b/docs/getting_started/quick_glance.rst index da65f2e51..d58303e29 100644 --- a/docs/getting_started/quick_glance.rst +++ b/docs/getting_started/quick_glance.rst @@ -3,92 +3,141 @@ Quick Glance ============ Pyramid lets you start small and finish big. This :doc:`index` guide -walks you through many of the key features. Let's put the emphasis on -*start* by doing a quick tour through Pyramid. - -This *Quick Glance* is provides snippets instead of full examples. For -working code, see the *Getting Started* chapters on each topic. +walks you through many of Pyramid's key features. Let's put the +emphasis on *start* by doing a quick tour through Pyramid, with +snippets of code to illustrate major concepts. .. note:: Like the rest of Getting Started, we're using Python 3 in - our samples. You can too, or you can use Python 2.7. + our samples. Pyramid was one of the first (October 2011) web + frameworks to fully support Python 3. You can use Python 3 + as well for this guide, but you can also use Python 2.7. -Setup -===== +Python Setup +============ -This is just a "quick glance", so we won't kill ourselves showing -installation details. The guides fully cover each topic, -including setup. In a nutshell: +First things first: we need our Python environment in ship-shape. +Pyramid encourages standard Python development practices (virtual +environments, packaging tools, etc.) so let's get our working area in +place. For Python 3.3: .. code-block:: bash $ pyvenv-3.3 env33 $ source env33/bin/activate - $ curl -O http://python-distribute.org/distribute_setup.py - $ python3.3 ./distribute_setup.py - $ rm distribute* + $ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python $ easy_install-3.3 pip - $ pip-3.3 install pyramid -We use Python 3.3's builtin virtual environment tool ``pyvenv`` to make -an isolated Python. It is so isolated, we don't have package -installation tools! After setting those up and cleaning up, -we install Pyramid into our virtual environment. +We make a :term:`virtualenv` then activate it. We then get Python +packaging tools installed so we can use the popular ``pip`` tool for +installing packages. Normal first steps for any Python project. -.. note:: +Pyramid Installation +==================== - Note the use of ``3.3`` on many of the commands, as a way to emphasize - in this document which versions of the commands we are using. This is - optional. +We now have a standard starting point for Python. Getting Pyramid +installed is easy: +.. code-block:: bash + $ pip install pyramid -The Smallest -============ +Our virtual environment now has the Pyramid software available to its +Python. + +Hello World +=========== Microframeworks have shown that learning starts best from a very small first step. Here's a tiny application in Pyramid: -.. literalinclude:: quick_glance/app1.py +.. literalinclude:: quick_glance/hello_world/app.py + :linenos: This simple example is easy to run. Save this as ``app.py`` and run it: .. code-block:: bash - $ python3 ./app.py + $ python ./app.py -Finally, open `http://localhost:8081/ <http://localhost:8081/>`_ in a +Next, open `http://localhost:6543/ <http://localhost:6543/>`_ in a browser and you will see the ``Hello World!`` message. -At a high level, we wrote a Python module, which when executed, -started an HTTP server. This HTTP server ran a WSGI application with -one "view". This view handled the ``http://localhost:8081/`` URL. +New to Python web programming? If so, some lines in module merit +explanation: -More specifically: +#. *Line 10*. ``if __name__ == '__main__':`` is Python's way of + saying "Start here when running from the command line". -#. We imported an HTTP server (``make_server``), a configuration system - (``Configurator``), and a way to send HTTP responses (``Response``). +#. *Lines 11-13*. Use Pyramid's :term:`configurator` to connect + :term:`view` code to particular URL :term:`route`. -#. We made a ``hello_world`` function that returned a ``Response``. +#. *Lines 6-7*. Implement the view code that generates the + :term:`response`. -#. Our ``main`` function started the configuration, added a "route", - and then mapped that route to a "view". +#. *Lines 14-16*. Publish a :term:`WSGI` app using an HTTP server. -#. To finish, we then made a WSGI app and served it. - ``if __name__ == '__main__':`` is a standard Python technique to - execute code when it is run from the command line instead of - imported into another module. +Handling Web Requests With webob +================================ -.. note:: +Developing for the web means processing web requests. As this is a +critical part of a web application, web developers need a robust, +mature set of software for web requests. + +Pyramid has always fit nicely into the existing world of Python web +development (virtual environments, packaging, scaffolding, +first to embrace Python 3, etc.) For request handling, Pyramid turned +to the well-regarded :term:`WebOb` Python library for request and +response handling. In our example +above, Pyramid hands ``hello_world`` a ``request`` that is +:ref:`based on WebOb <webob_chapter>`. + +Let's see some features of requests and responses in action: + +.. literalinclude:: quick_glance/requests/app.py + :pyobject: hello_world + + + +Views +===== - The configuration of the route and the view are split. Other systems - let you bundle those together. Pyramid makes you do the extra step, - but for a reason: this lets you control the ordering. More on this - later. +In the example above, the ``hello_world`` function is a "view" (or more +specifically, a :term:`view callable`. Views are the primary way to +accept web requests and return responses. -Using Decorators and Matchdicts -=============================== +So far the view, its registration with the configuration, and the route +to map it to a URL are all in the same Python module as the WSGI +application launching. Let's move the views out to their own ``views +.py`` module and change the ``app.py`` to scan that module looking for +decorators that setup the views. First, our revised ``app.py``: + +.. literalinclude:: quick_glance/views/app.py + :linenos: + +We added some more routes, but we also removed the view code. +Our views, and their registrations (via decorators) are now in a module +``views.py`` which is scanned via: + +.. code-block:: python + + config.scan('views') + +Our ``views.py`` is now more self-contained: + +.. literalinclude:: quick_glance/views/views.py + :linenos: + + + +- Raise exception, redirect +- Change header +- request object +- "callable" + +Routing With Decorators and Matchdicts +====================================== Let's repeat the smallest step, but make it a little more functional and elegant by adding: @@ -101,20 +150,27 @@ and elegant by adding: Let's make update our ``app.py`` module: -.. literalinclude:: quick_glance/app2.py +.. literalinclude:: quick_glance/routing/app.py :linenos: -When you run ``python3 ./app.py`` and visit a URL such as -``http://localhost:8081/hello/amy``, the response includes ``amy`` in +When you run ``python ./app.py`` and visit a URL such as +``http://localhost:6543/hello/amy``, the response includes ``amy`` in the HTML. This module, while small, starts to show how many Pyramid applications are composed: -#. We use a decorator around the view, to put the configuration closer - to the code. +#. *Line 7*. Pyramid's configuration supports + :term:`imperative configuration`, such as the ``config.add_view`` in + the previous example. You can also use + :term:`declarative configuration`, in which a Python + :term:`decorator` is placed on the line above the view. + +#. *Line 14*. When setting up the route, mark off a section of the URL + to be data available to the view's :term:`matchdict`. + +#. *Line 15*. Tell the configurator to go look for decorators. -#. We tell the ``Configurator`` to go look for decorators. Templates ========= @@ -139,7 +195,7 @@ argument tell Pyramid to pass the response through Jinja2: .. code-block:: python - @view_config(route_name='hello', renderer="app3.jinja2") + @view_config(route_name='hello', renderer="hello_world.jinja2") def hello_world(request): return dict(name=request.matchdict['name']) @@ -170,7 +226,7 @@ Pyramid will serve some static assets. First, another call to the config.add_static_view(name='static', path='static') This tells our WSGI application to map requests under -``http://localhost:8081/static/`` to files and directories inside a +``http://localhost:6543/static/`` to files and directories inside a ``static`` directory alongside our Python module. Next, make a directory ``static`` and place ``app.css`` inside: @@ -309,7 +365,7 @@ instructions*, we need to install this as a development package: .. code-block:: bash $ cd hello_world - $ python3.3 ./setup.py develop + $ python ./setup.py develop What did we get? A top-level directory ``hello_world`` that includes some packaging files and a subdirectory ``hello_world`` that has @@ -444,7 +500,7 @@ First, change your ``setup.py`` to say: .. code-block:: bash - $ python3.3 ./setup.py develop + $ python ./setup.py develop The Python package was now installed into our environment but we haven't told our web app to use it. We can do so imperatively in code: @@ -489,7 +545,7 @@ the ``coverage`` tool which yells at us for code that isn't tested: ) We changed ``setup.py`` which means we need to re-run -``python3.3 ./setup.py develop``. We can now run all our tests: +``python ./setup.py develop``. We can now run all our tests: .. code-block:: bash @@ -626,7 +682,7 @@ scaffold! $ pcreate --scaffold alchemy hello_sqlalchemy $ cd hello_sqlalchemy - $ python3.3 setup.py develop + $ python setup.py develop We now have a working sample SQLAlchemy application with all dependencies installed. The sample project provides a console script to @@ -714,8 +770,6 @@ Authorization Notes -- Change 8081 -> 6543 - - See also, interlinking, teasers or "3 Extras" at the end of each section, links to a downloadable version of the Python module @@ -733,4 +787,4 @@ Notes - Explain and link to WSGI, Python Packages -- Richer routing
\ No newline at end of file +- Richer routing diff --git a/docs/getting_started/quick_glance/app1.py b/docs/getting_started/quick_glance/hello_world/app.py index cffe53ecf..df5a6cf18 100644 --- a/docs/getting_started/quick_glance/app1.py +++ b/docs/getting_started/quick_glance/hello_world/app.py @@ -12,5 +12,5 @@ if __name__ == '__main__': config.add_route('hello', '/') config.add_view(hello_world, route_name='hello') app = config.make_wsgi_app() - server = make_server('0.0.0.0', 8081, app) + server = make_server('0.0.0.0', 6543, app) server.serve_forever()
\ No newline at end of file diff --git a/docs/getting_started/quick_glance/app3.py b/docs/getting_started/quick_glance/jinja2/app.py index 549cb5f54..bee50373b 100644 --- a/docs/getting_started/quick_glance/app3.py +++ b/docs/getting_started/quick_glance/jinja2/app.py @@ -15,5 +15,5 @@ if __name__ == '__main__': config.include('pyramid_jinja2') config.scan() app = config.make_wsgi_app() - server = make_server('0.0.0.0', 8081, app) + server = make_server('0.0.0.0', 6543, app) server.serve_forever()
\ No newline at end of file diff --git a/docs/getting_started/quick_glance/app3.jinja2 b/docs/getting_started/quick_glance/jinja2/hello_world.jinja2 index 6d9f0cd5f..6d9f0cd5f 100644 --- a/docs/getting_started/quick_glance/app3.jinja2 +++ b/docs/getting_started/quick_glance/jinja2/hello_world.jinja2 diff --git a/docs/getting_started/quick_glance/app5.py b/docs/getting_started/quick_glance/json/app.py index 245a0a5ae..9b47fdeaf 100644 --- a/docs/getting_started/quick_glance/app5.py +++ b/docs/getting_started/quick_glance/json/app.py @@ -22,5 +22,5 @@ if __name__ == '__main__': config.include('pyramid_jinja2') config.scan() app = config.make_wsgi_app() - server = make_server('0.0.0.0', 8081, app) + server = make_server('0.0.0.0', 6543, app) server.serve_forever()
\ No newline at end of file diff --git a/docs/getting_started/quick_glance/hello_world/CHANGES.txt b/docs/getting_started/quick_glance/package/CHANGES.txt index ffa255da8..ffa255da8 100644 --- a/docs/getting_started/quick_glance/hello_world/CHANGES.txt +++ b/docs/getting_started/quick_glance/package/CHANGES.txt diff --git a/docs/getting_started/quick_glance/hello_world/MANIFEST.in b/docs/getting_started/quick_glance/package/MANIFEST.in index 18fbd855c..18fbd855c 100644 --- a/docs/getting_started/quick_glance/hello_world/MANIFEST.in +++ b/docs/getting_started/quick_glance/package/MANIFEST.in diff --git a/docs/getting_started/quick_glance/hello_world/README.txt b/docs/getting_started/quick_glance/package/README.txt index 63aaf6fbd..63aaf6fbd 100644 --- a/docs/getting_started/quick_glance/hello_world/README.txt +++ b/docs/getting_started/quick_glance/package/README.txt diff --git a/docs/getting_started/quick_glance/hello_world/development.ini b/docs/getting_started/quick_glance/package/development.ini index 9aa5f40cf..9aa5f40cf 100644 --- a/docs/getting_started/quick_glance/hello_world/development.ini +++ b/docs/getting_started/quick_glance/package/development.ini diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/__init__.py b/docs/getting_started/quick_glance/package/hello_world/__init__.py index 9b5753c26..9b5753c26 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/__init__.py +++ b/docs/getting_started/quick_glance/package/hello_world/__init__.py diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/locale/de/LC_MESSAGES/hello_world.mo b/docs/getting_started/quick_glance/package/hello_world/locale/de/LC_MESSAGES/hello_world.mo Binary files differindex 40bf0c271..40bf0c271 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/locale/de/LC_MESSAGES/hello_world.mo +++ b/docs/getting_started/quick_glance/package/hello_world/locale/de/LC_MESSAGES/hello_world.mo diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/locale/de/LC_MESSAGES/hello_world.po b/docs/getting_started/quick_glance/package/hello_world/locale/de/LC_MESSAGES/hello_world.po index 0df243dba..0df243dba 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/locale/de/LC_MESSAGES/hello_world.po +++ b/docs/getting_started/quick_glance/package/hello_world/locale/de/LC_MESSAGES/hello_world.po diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/locale/fr/LC_MESSAGES/hello_world.mo b/docs/getting_started/quick_glance/package/hello_world/locale/fr/LC_MESSAGES/hello_world.mo Binary files differindex 4fc438bfe..4fc438bfe 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/locale/fr/LC_MESSAGES/hello_world.mo +++ b/docs/getting_started/quick_glance/package/hello_world/locale/fr/LC_MESSAGES/hello_world.mo diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/locale/fr/LC_MESSAGES/hello_world.po b/docs/getting_started/quick_glance/package/hello_world/locale/fr/LC_MESSAGES/hello_world.po index dc0aae5d7..dc0aae5d7 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/locale/fr/LC_MESSAGES/hello_world.po +++ b/docs/getting_started/quick_glance/package/hello_world/locale/fr/LC_MESSAGES/hello_world.po diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/locale/hello_world.pot b/docs/getting_started/quick_glance/package/hello_world/locale/hello_world.pot index 9c9460cb2..9c9460cb2 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/locale/hello_world.pot +++ b/docs/getting_started/quick_glance/package/hello_world/locale/hello_world.pot diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/models.py b/docs/getting_started/quick_glance/package/hello_world/models.py index edd361c9c..edd361c9c 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/models.py +++ b/docs/getting_started/quick_glance/package/hello_world/models.py diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/static/favicon.ico b/docs/getting_started/quick_glance/package/hello_world/static/favicon.ico Binary files differindex 71f837c9e..71f837c9e 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/static/favicon.ico +++ b/docs/getting_started/quick_glance/package/hello_world/static/favicon.ico diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/static/logo.png b/docs/getting_started/quick_glance/package/hello_world/static/logo.png Binary files differindex 88f5d9865..88f5d9865 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/static/logo.png +++ b/docs/getting_started/quick_glance/package/hello_world/static/logo.png diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/static/pylons.css b/docs/getting_started/quick_glance/package/hello_world/static/pylons.css index 42e2e320e..42e2e320e 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/static/pylons.css +++ b/docs/getting_started/quick_glance/package/hello_world/static/pylons.css diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/templates/mytemplate.jinja2 b/docs/getting_started/quick_glance/package/hello_world/templates/mytemplate.jinja2 index 998edfe12..998edfe12 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/templates/mytemplate.jinja2 +++ b/docs/getting_started/quick_glance/package/hello_world/templates/mytemplate.jinja2 diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/tests.py b/docs/getting_started/quick_glance/package/hello_world/tests.py index a81c29eb0..a81c29eb0 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/tests.py +++ b/docs/getting_started/quick_glance/package/hello_world/tests.py diff --git a/docs/getting_started/quick_glance/hello_world/hello_world/views.py b/docs/getting_started/quick_glance/package/hello_world/views.py index c271d45dd..c271d45dd 100644 --- a/docs/getting_started/quick_glance/hello_world/hello_world/views.py +++ b/docs/getting_started/quick_glance/package/hello_world/views.py diff --git a/docs/getting_started/quick_glance/hello_world/message-extraction.ini b/docs/getting_started/quick_glance/package/message-extraction.ini index 0c3d54bc1..0c3d54bc1 100644 --- a/docs/getting_started/quick_glance/hello_world/message-extraction.ini +++ b/docs/getting_started/quick_glance/package/message-extraction.ini diff --git a/docs/getting_started/quick_glance/hello_world/setup.cfg b/docs/getting_started/quick_glance/package/setup.cfg index 186e796fc..186e796fc 100644 --- a/docs/getting_started/quick_glance/hello_world/setup.cfg +++ b/docs/getting_started/quick_glance/package/setup.cfg diff --git a/docs/getting_started/quick_glance/hello_world/setup.py b/docs/getting_started/quick_glance/package/setup.py index 6269accf1..6269accf1 100644 --- a/docs/getting_started/quick_glance/hello_world/setup.py +++ b/docs/getting_started/quick_glance/package/setup.py diff --git a/docs/getting_started/quick_glance/requests/app.py b/docs/getting_started/quick_glance/requests/app.py new file mode 100644 index 000000000..df5a6cf18 --- /dev/null +++ b/docs/getting_started/quick_glance/requests/app.py @@ -0,0 +1,16 @@ +from wsgiref.simple_server import make_server +from pyramid.config import Configurator +from pyramid.response import Response + + +def hello_world(request): + return Response('<h1>Hello World!</h1>') + + +if __name__ == '__main__': + config = Configurator() + config.add_route('hello', '/') + config.add_view(hello_world, route_name='hello') + app = config.make_wsgi_app() + server = make_server('0.0.0.0', 6543, app) + server.serve_forever()
\ No newline at end of file diff --git a/docs/getting_started/quick_glance/app2.py b/docs/getting_started/quick_glance/routing/app.py index 49ccd3be1..bbae35b07 100644 --- a/docs/getting_started/quick_glance/app2.py +++ b/docs/getting_started/quick_glance/routing/app.py @@ -14,5 +14,5 @@ if __name__ == '__main__': config.add_route('hello', '/hello/{name}') config.scan() app = config.make_wsgi_app() - server = make_server('0.0.0.0', 8081, app) + server = make_server('0.0.0.0', 6543, app) server.serve_forever()
\ No newline at end of file diff --git a/docs/getting_started/quick_glance/app6.py b/docs/getting_started/quick_glance/view_classes/app.py index 155becc54..90978344b 100644 --- a/docs/getting_started/quick_glance/app6.py +++ b/docs/getting_started/quick_glance/view_classes/app.py @@ -26,5 +26,5 @@ if __name__ == '__main__': config.include('pyramid_jinja2') config.scan() app = config.make_wsgi_app() - server = make_server('0.0.0.0', 8081, app) + server = make_server('0.0.0.0', 6543, app) server.serve_forever()
\ No newline at end of file diff --git a/docs/getting_started/quick_glance/views/app.py b/docs/getting_started/quick_glance/views/app.py new file mode 100644 index 000000000..1e12b6581 --- /dev/null +++ b/docs/getting_started/quick_glance/views/app.py @@ -0,0 +1,10 @@ +from wsgiref.simple_server import make_server +from pyramid.config import Configurator + +if __name__ == '__main__': + config = Configurator() + config.add_route('hello', '/hello/{name}') + config.scan('views') + app = config.make_wsgi_app() + server = make_server('0.0.0.0', 6543, app) + server.serve_forever()
\ No newline at end of file diff --git a/docs/getting_started/quick_glance/views/views.py b/docs/getting_started/quick_glance/views/views.py new file mode 100644 index 000000000..53a6a273a --- /dev/null +++ b/docs/getting_started/quick_glance/views/views.py @@ -0,0 +1,7 @@ +from pyramid.response import Response +from pyramid.view import view_config + + +@view_config(route_name='hello') +def hello_world(request): + return Response('<h1>Hello %(name)s!</h1>' % request.matchdict) diff --git a/docs/getting_started/scaffolds.rst b/docs/getting_started/scaffolds.rst index 437291089..af26ab6d6 100644 --- a/docs/getting_started/scaffolds.rst +++ b/docs/getting_started/scaffolds.rst @@ -1,3 +1,10 @@ ==================================== Starting New Projects With Scaffolds -====================================
\ No newline at end of file +==================================== + +Pyramid projects are organized using normal Python facilities for +projects. Normal, though, is in the eye of the beholder. This chapter +shows how to use scaffolds to automate the boilerplate and quickly +start development of a new project. + +Topics: scaffolds, packaging, virtual environments diff --git a/docs/getting_started/quick_glance/app4.py b/docs/getting_started/static_assets/app.py index 245ed0b68..a0c967c47 100644 --- a/docs/getting_started/quick_glance/app4.py +++ b/docs/getting_started/static_assets/app.py @@ -15,5 +15,5 @@ if __name__ == '__main__': config.include('pyramid_jinja2') config.scan() app = config.make_wsgi_app() - server = make_server('0.0.0.0', 8081, app) + server = make_server('0.0.0.0', 6543, app) server.serve_forever()
\ No newline at end of file diff --git a/docs/getting_started/quick_glance/app4.jinja2 b/docs/getting_started/static_assets/hello_world.jinja2 index 3d0f28c1f..3d0f28c1f 100644 --- a/docs/getting_started/quick_glance/app4.jinja2 +++ b/docs/getting_started/static_assets/hello_world.jinja2 diff --git a/docs/index.rst b/docs/index.rst index 09bbb5a9a..e61fe64d4 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -48,10 +48,30 @@ What's New Getting Started =============== +Quick tour of major facilities in Pyramid, including a +:doc:`getting_started/quick_glance` high-level +overview. + .. toctree:: - :maxdepth: 2 + :maxdepth: 1 getting_started/index + getting_started/quick_glance + getting_started/scaffolds + getting_started/configuration + getting_started/routes + getting_started/views + getting_started/templates + getting_started/static_assets + getting_started/testing + getting_started/forms + getting_started/databases + getting_started/security + getting_started/json + getting_started/sessions + getting_started/internationalization + getting_started/special_views + getting_started/top_ten .. _html_narrative_documentation: @@ -192,6 +212,8 @@ management. It provides facilities for wikis, calendars, manuals, searching, tagging, commenting, and file uploads. See the `KARL site <http://karlproject.org>`_ for download and installation details. +.. _support-and-development: + Support and Development ======================= |
