Nagare - an example of using the framework

    In my last post, I presented Nagare - a revolutionary (albeit unrivaled on Smalltalk and CL ) Python web framework. That post was somewhat messy and reflected, rather, the degree of my enthusiasm than the real features of the technology. Today I will try to give a slightly more practical example.

    Start over. First of all, we need Stackless Python . To install on FreeBSD (hereinafter, I will use this system as a base, there shouldn’t be any differences for Linux, there are features for MacOS and Windows, but they are not critical) you need to download the distribution package: unzip it: configure it (we will install it in / usr / local / stackless)

    $ fetch \

    $ tar -xvjf stackless-264-export.tar.bz2

    $ cd stackless-2.6.4
    $ ./configure --prefix=/usr/local/stackless

    compile and install: Actually, it would be most correct to install stackless-python through the ports system, but for some reason it is missing from it. Now we need to download and unzip virtualenv : then create a virtual “sandbox” in which Nagare will work (/ usr / local / nagare): Now, we need to install, in fact, Nagare itself: Everything, Nagare is installed and ready to work. Create an application: The test1 directory will be created containing the following files: ./test1/ ./test1/test1/ ./test1/test1/ ./test1/test1/ ./test1/ static / __ ./test1/data/ ./test1/conf/
    $ make
    $ sudo make install

    $ fetch \
    $ tar -xvzf virtualenv-1.4.5.tar.gz

    $ cd virtualenv-1.4.5
    $ sudo /usr/local/stackless/bin/python ./ /usr/local/nagare

    sudo /usr/local/nagare/bin/easy_install 'nagare[full]'

    $ /usr/local/nagare/bin/nagare-admin create-app test1
    Application 'test1' created.

    1. Edit the file 'test1/' to set the informations about your new application.
    2. Register your application with:
    - cd "test1"
    - "/usr/local/nagare/bin/python" develop


    The file contains all the service information such as a license, author name, email address, etc., you can leave it blank for a test application, it will work like that.

    In the conf / test1.cfg file, enable debugging mode and connect the database (by default - sqlite). After corrections, it will look like this: Now we execute the command: Everything, the application is registered, you can test it: By default, the application will be available at \ http: // 8080 / test1. We proceed to the development. First we set up the database tables. To do this, edit the test1 / file, adding table definitions (for those interested in details, I will refer to the Elixir documentation ). As a result, the file will look like this:

    path = app test1
    name = test1
    debug = on

    activated = on
    uri = sqlite:///$here/../data/test1.db
    metadata = test1.models:__metadata__
    debug = on

    $ sudo /usr/local/nagare/bin/python ./ develop

    $ /usr/local/nagare/bin/nagare-admin serve test1
    Application 'app test1' registered as '/test1'
    03/17/10 18:00:35 - serving on \

    from elixir import *
    from sqlalchemy import MetaData
    __metadata__ = MetaData()
    class GuestBookRecord(Entity):

    Let's create the database itself: Now we program the simplest guest book. To do this, edit test1 / as follows:
    $ /usr/local/nagare/bin/nagare-admin create-db test1
    2010-03-17 18:08:22,895 INFO sqlalchemy.engine.base.Engine.0x...ac6c PRAGMA table_info("test1_models_guestbookrecord")
    2010-03-17 18:08:22,900 INFO sqlalchemy.engine.base.Engine.0x...ac6c ()
    2010-03-17 18:08:22,934 INFO sqlalchemy.engine.base.Engine.0x...ac6c
    CREATE TABLE test1_models_guestbookrecord (
    text VARCHAR(1000),
    name VARCHAR(50),
    PRIMARY KEY (id)

    2010-03-17 18:08:22,971 INFO sqlalchemy.engine.base.Engine.0x...ac6c ()
    2010-03-17 18:08:22,982 INFO sqlalchemy.engine.base.Engine.0x...ac6c COMMIT

    from __future__ import with_statement
    import os
    from nagare import presentation, var
    # Импортируем структуру таблиц
    from models import *
    class Test1(object):
      def __init__(self):"")    #  В эти переменные будут помещаться значения полей формы
        self.text=var.Var("")      #
    #  Метод для добавления записи в БД
      def add_rec(self):
    def render(self, h, *args):
    # Заголовок

    Launching the application with the command: At the address \ http: // 8080 / test1 we will find a premium guest book, in the style of "Hello from the 90s." The above example does not reveal 10% of the capabilities of Nagare and is given only as an example. Next time I'll show you how to use Nagare to create more complex applications.
    $ /usr/local/nagare/bin/nagare-admin serve test1

    Also popular now: