I created my fist aplication in Werkzeug (Python based). It's a simple HTML page with 3 forms, and Werkzeug needs get this information and handled it. I'm new in HTML, as in Werkzeug too.
I started by first Werkzeug example, but I not understand all. Werkzeug have an *url_map*. For me, it's useful for Werkzeug determines what page and method is starter. Them, in my example bellow, I have *on_layout* method and *layout.html* page. It's work very well for first form only. I can *POST* how many informations desire and Werkzeug handled it (only for the first *form* in .html page), but when I put information in the second *form*, an 400 error happens, but I test the content of each *form* every time! I suspect that I can't handled map and "on_" methods well. I not understand the relation between them. In resume, I need switch between html templates and get the informations of forms. I attach htlm page and werkzeug class -- You received this message because you are subscribed to the Google Groups "pocoo-libs" group. To unsubscribe from this group and stop receiving emails from it, send an email to pocoo-libs+unsubscr...@googlegroups.com. To post to this group, send email to pocoo-libs@googlegroups.com. Visit this group at https://groups.google.com/group/pocoo-libs. For more options, visit https://groups.google.com/d/optout.
SMART Agenda
SMART Agenda using SPADE multiagent platform.
import os import redis import spade from werkzeug.wrappers import Request, Response from werkzeug.routing import Map, Rule from werkzeug.exceptions import HTTPException, NotFound from werkzeug.wsgi import SharedDataMiddleware from werkzeug.utils import redirect from jinja2 import Environment, FileSystemLoader class WSGI(object): def __init__(self, config): self.redis = redis.Redis(config['redis_host'], config['redis_port']) template_path = os.path.join(os.path.dirname(__file__), 'templates') self.jinja_env = Environment(loader=FileSystemLoader(template_path), autoescape=True) self.url_map = Map([ Rule('/', endpoint='layout') #Rule('/', endpoint='new_account'), #Rule('/', endpoint='layout') ]) def render_template(self, template_name, **context): t = self.jinja_env.get_template(template_name) return Response(t.render(context), mimetype='text/html') def dispatch_request(self, request): adapter = self.url_map.bind_to_environ(request.environ) try: endpoint, values = adapter.match() return getattr(self, 'on_' + endpoint)(request, **values) except HTTPException, e: return e def wsgi_app(self, environ, start_response): request = Request(environ) response = self.dispatch_request(request) return response(environ, start_response) def __call__(self, environ, start_response): return self.wsgi_app(environ, start_response) ######################################################################################## ######################################################################################## def on_layout(self, request): self.render_template('layout.html') global coordinator error = None name = '' event = '' if request.method == 'POST': if request.form['firstname'] != '': name = request.form['firstname'] if name[0].isupper(): transport1 = request.form['transport1'] transport2 = request.form['transport2'] transport3 = request.form['transport3'] hotel = request.form['hotel'] user_data = spade.content.ContentObject() user_data["name"] = name user_data["transport1"] = transport1 user_data["transport2"] = transport2 user_data["transport3"] = transport3 user_data["hotel"] = hotel #self.render_template('new_account.html') #400 error happen #self.on_layout(request) #infinite loop elif request.form['event'] != '': user = request.form['user'] day = request.form['day'] month = request.form['month'] year = request.form['year'] hour = request.form['hour'] event = request.form['event'] user_data = spade.content.ContentObject() user_data["user"] = user user_data["day"] = day user_data["month"] = month user_data["year"] = year user_data["hour"] = hour user_data["event"] = event elif request.form['name_user'] != '': #response("Ok") pass return self.render_template('layout.html') ######################################################################################## ######################################################################################## def create_app(redis_host='localhost', redis_port=6379, with_static=True): app = WSGI({ 'redis_host': redis_host, 'redis_port': redis_port }) if with_static: app.wsgi_app = SharedDataMiddleware(app.wsgi_app, { '/static': os.path.join(os.path.dirname(__file__), 'static') }) return app if __name__ == '__main__': from werkzeug.serving import run_simple app = create_app() run_simple('127.0.0.1', 5000, app, use_debugger=True, use_reloader=False)