Dzisiaj na blipie kilka osób podzieliło się linkami do niesamowitego frameworku Troika.ASP. Tutorial bardzo mi się spodobał, więc natychmiast zechciałem przygotować swoją wersję.

Disclaimer

Osoby bez poczucia humoru powinny iść do domu na obiad, mama was przed chwilą wołała.

Tutorial

Napiszemy prostą aplikację za pomocą Troika.py. Celem jest pośmianie się.

  1. Tworzymy nowy projekt:

    $ django-admin.py startproject troikapy
    $ cd troikapy
    $ ls
    __init__.py  manage.py  settings.py  urls.py
    $ chmod +x manage.py

    Oto, co robi powyższa deklaracja:

    • Tworzy nowy projekt o nazwie troikapy;
    • Wchodzi do stworzonego katalogu;
    • Drukuje listę plików;
    • Nadaje plikowi manage.py atrybut wykonywalny
  2. Tworzymy nową aplikację:

    $ mkdir hello
    $ touch hello/__init__.py
    $ mkdir hello/templates
  3. Stwórzmy plik hello/views.py:

    from django import forms
    from django.views.generic.simple import direct_to_template
    
    class HelloForm(forms.Form):
      name = forms.CharField(label = u'Name, bitch')
    
    def hello(request):
      if request.method == 'POST':
        form = HelloForm(request.POST)
        if form.is_valid():
          name = form.cleaned_data['name']
          return direct_to_template(request, 'hello.html', {'form': form, 'name': name})
      else:
        form = HelloForm()
      return direct_to_template(request, 'hello.html', {'form': form})
  4. Stwórzmy plik hello/templates/hello.html:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
          Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
            <head>
                    <title>Hello World Application</title>
            </head>
            <body>
                    <h1>Welcome to Hello World Application!</h1>
    {% if name %}
                    <h2>Hello {{ name }}!</h2>
                    <p>Date/time is {% now "r" %}</p>
    {% endif %}
                    <form method="post" action="">
                            {{ form.as_p }}
                            <p><input type="submit"></p>
                    </form>
            </body>
    </html>
  5. Modyfikujemy plik urls.py w celu powiązania akcji HelloAction z komendą helloworld przypisania widoku (kontrolera) do adresu:

    from django.conf.urls.defaults import *
    
    urlpatterns = patterns('',
        (r'^$', 'hello.views.hello'),
    )
  6. W pliku settings.py umieszczamy aplikację hello jako jedyną na liście INSTALLED_APPS:

    …
    
    INSTALLED_APPS = (
        'hello',
    )
  7. Zauważamy, że prawie nic nie napisaliśmy, a mimo to skończyliśmy o 6 kroków za szybko. Ten i kilka kolejnych kroków przeznaczamy na wymyślanie zawiłych formatów aplikacji XML i separację MVC poprzez osadzanie kodu serwerowego w szablonach HTML. Powoli wracamy do zmysłów, zaczynamy zastanawiać się, czemu reszta świata nie chce używać Troika.ASP.