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.

Create new account:

Name:

Transport preference:

Train Airplane Car Train Airplane Car Train Airplane Car

Hotel stars preference:

1 2 3 4 5


Add an event: Name:

Date:

Event:


Agenda:
Name:

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)    

Reply via email to