Hi, thanks for the answers so far. The lambda-thing works for me to, but unfortunately i guess this must be supported by the widget. The forms support this, but i got several other widgets that dont (some selfmades i dont want to rewrite for that) Regarding the app.get(/)-tipp: I read that tip before and inserted that into my wsgi-file, but it doesnt change anything :/ The way to pass urls during display() sounds a bit complicated. I pasted a bit of my code:
http://paste.turbogears.org/paste/122962 I got several of these grids and to pass several urls for several columns is kinda against the idea of keeping it simple. I think i will override the url-function and use some sort of static prefix (stored in the settings) to append to each url (since i already use absolute urls this isnt that much work). Either i have missed some important point or this is kinda unhandy ^^ Greetings On 12 Okt., 16:42, Alessandro Molina <[email protected]> wrote: > On Monday 12 October 2009 14:33:19 Diez B. Roggisch wrote: > > > > > > > On Monday 12 October 2009 13:04:54 Daishy wrote: > > > Hi together, > > > > I got a problem using the tg.url function that i cant seem to fix: I > > > wrote a form which is basicly like the one in the tutorial (in the > > > documentationsection). It is defined outside the Controller and passed > > > to the template by one of the functions inside the controller. Now i > > > have the action attribute defined es url('/root/sub/save') which works > > > fine, if my app is hosted under '/'. Now i want to deploy it on > > > another machine, which uses apache+mod_wsgi and a subpath '/myapp'. > > > Within the templates and the controller url('/root/sub/method') gets > > > translated to '/myapp/root/sub/method' which is correct. The Form > > > however ist still /root/sub/save. > > > Am i not allowed to use the url-function outside of an controller and > > > what else should i do instead? > > > Try making the action a callable. That should be evaluated and > > form-rendering-time, yielding the correct result. > > > Like this: > > > my_form = TableForm('my_form', action=lambda: url("/root/sub/method", ..) > > That should not work on TW forms if they didn't change something recently. It > would print the repr of the lambda function. > > As far as I have been able to understand the problem is caused by the fact > that you need at least one request to be able to setup correctly tw injected > urls. > > I have been able to fix the problem by providing a fake request inside the > wsgi application initialization script with those few lines: > > import paste.fixture > app = paste.fixture.TestApp(application) > app.get("/") > > suppose you have something like > > from paste.deploy import loadapp > application = loadapp('config:%s' % APP_CONFIG) > > just add them after the application instance has been created. > > This solved the problem when running the application, but keep in mind that > having urls called outside of controller methods will cause problems when > generating your application documentation by using sphinx. For this reason it > is usually better to create the form action urls inside the controller method > that will render the form and pass them to the form.display call inside the > template. > > Probably another viable solution is to define a class for which its __str__ > and __repr__ methods return a call to url, but that is a more fancy solution > :D --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/turbogears?hl=en -~----------~----~----~----~------~----~------~--~---

