Forwarding to James Gardner. I don't know how many others have expertise with FormBuild.
I assume it's trying to call the '.replace' string method, but the object is the wrong type (function). Make sure you're calling the form method with the right arguments. Otherwise it could be a bug in FormBuild. ---------- Forwarded message ---------- From: Boyi <[email protected]> Date: Wed, Dec 15, 2010 at 9:01 AM Subject: formbuild3 start_with_layout() : 'function' object has no attribute 'replace' To: pylons-discuss <[email protected]> Dear All, I am new to pylons and python, need help with a problem that I have. Sorry if my question sounds silly. I am learning through the pylons book, currently working on chapter 8. I am using pylons 1.0 and formbuild 3.0 and mako. Therefore I modified the code to suit the packages by referring to the codes available in the posts and internet. While executing http://localhost:5000/page/new, I received an error of AttributeError: 'function' object has no attribute 'replace'. It seems that the coding below ( in new.html) is the source of the error. ${h.form.start_with_layout(h.url(controller='page', action='create'),method='post')} However it wont be an error if I use start_layout() function instead. ${h.form.start_layout(h.url(controller='page', action='create'))} I am using the start_with_layout() because it is illustrated in the book examples. Am I missing something? By the way, another question, how do I specify the textarea cols and rows in formbuild3. I cant find the example in doing that. The coding and the errors notification is shown below. TQ in Advance. ________________________________________ Form is in "forms" module--> from formbuild import Form from webhelpers.html import literal class LiteralForm(Form): def __getattribute__(self, name): if name in ['value', 'option', 'error', 'checked', 'flow']: return Form.__getattribute__(self, name) def make_literal(*k, **p): return literal(getattr(Form, name)(self, *k, **p)) return make_literal _____________________________________________________ helpers.py --> from webhelpers.html.tags import * from simplesite.forms import LiteralForm from pylons import url form = LiteralForm( value={ 'heading':u'', 'title':u'', 'content':u'' } ) _______________________________________ fields.html --> ${h.form.field( label="Heading", type='text', name='heading', required=False, )} ${h.form.field( label="Title", type='text', name='title', required=True, field_desc = "Used as the heading too if you didn't specify one above" )} ${h.form.field( label="Content", type='textarea', name='content', required=True, field_desc = 'The text that will make up the body of the page' )} ______________________________________________________ new.html--> <%inherit file="/base/index.html" /> <%namespace file="fields.html" name="fields" import="*"/> <%def name="heading()"> <h1 class="main">Create a New Page</h1> </%def> form.start_with_layout(h.url(controller='page', action='create'),method='post')} ${fields.body()} ${h.form.action_bar(h.form.submit(value="Create Page", name='submit'))} ${h.form.end_layout()} ______________________________________________________ Error notifications ---> AttributeError: 'function' object has no attribute 'replace' 5 <h1 class="main">Create a New Page</h1> 6 </%def> 7 8 ${h.form.start_with_layout(h.url(controller='page', action='create'),method='post')} 9 ${fields.body()} 10 ${h.form.action_bar(h.form.submit(value="Create Page", name='submit'))} 11 ${h.form.end_layout()} 12 /usr/lib/python2.5/cgi.py, line 1055: s = s.replace("&", "&") # Must be done first! /tomyapp/mydevenv/lib/python2.5/site-packages/FormBuild-3.0.3- py2.5.egg/formbuild/__init__.py, line 188: return html + u'<table class="%s">'%(escape(table_class or self.table_class)) /tomyapp/SimpleSite/simplesite/forms.py, line 9: return literal(getattr(Form, name)(self, *k, **p)) /tomyapp/SimpleSite/simplesite/templates/derived/page/new.html, line 8: ${h.form.start_with_layout(h.url(controller='page', action='create'),method='post')} /tomyapp/SimpleSite/simplesite/templates/base/index.html, line 16: ${next.body()} /tomyapp/mydevenv/lib/python2.5/site-packages/Mako-0.3.6-py2.5.egg/ mako/runtime.py, line 626: callable_(context, *args, **kwargs) /tomyapp/mydevenv/lib/python2.5/site-packages/Mako-0.3.6-py2.5.egg/ mako/runtime.py, line 637: result = template.error_handler(context, error) /tomyapp/mydevenv/lib/python2.5/site-packages/Mako-0.3.6-py2.5.egg/ mako/runtime.py, line 628: _render_error(template, context, e) /tomyapp/mydevenv/lib/python2.5/site-packages/Mako-0.3.6-py2.5.egg/ mako/runtime.py, line 607: _exec_template(inherit, lclcontext, args=args, kwargs=kwargs) /tomyapp/mydevenv/lib/python2.5/site-packages/Mako-0.3.6-py2.5.egg/ mako/runtime.py, line 575: **_kwargs_for_callable(callable_, data)) /tomyapp/mydevenv/lib/python2.5/site-packages/Mako-0.3.6-py2.5.egg/ mako/template.py, line 292: as_unicode=True) /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/templating.py, line 240: return literal(template.render_unicode(**globs)) /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/templating.py, line 218: return render_func() /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/templating.py, line 243: cache_type=cache_type, cache_expire=cache_expire) /tomyapp/SimpleSite/simplesite/controllers/page.py, line 25: return render('/derived/page/new.html') /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/controllers/core.py, line 57: return func(**args) /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/controllers/core.py, line 105: result = self._perform_call(func, args) /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/controllers/core.py, line 162: response = self._inspect_call(func) /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/controllers/core.py, line 211: response = self._dispatch_call() /tomyapp/SimpleSite/simplesite/lib/base.py, line 18: return WSGIController.__call__(self, environ, start_response) /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/wsgiapp.py, line 312: return controller(environ, start_response) /tomyapp/mydevenv/lib/python2.5/site-packages/Pylons-1.0-py2.5.egg/ pylons/wsgiapp.py, line 107: response = self.dispatch(controller, environ, start_response) /tomyapp/mydevenv/lib/python2.5/site-packages/Routes-1.12.3-py2.5.egg/ routes/middleware.py, line 131: response = self.app(environ, start_response) /tomyapp/mydevenv/lib/python2.5/site-packages/Beaker-1.5.4-py2.5.egg/ beaker/middleware.py, line 152: return self.wrap_app(environ, session_start_response) /tomyapp/mydevenv/lib/python2.5/site-packages/WebError-0.10.3- py2.5.egg/weberror/evalexception.py, line 431: app_iter = self.application(environ, detect_start_response) -- You received this message because you are subscribed to the Google Groups "pylons-discuss" 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/pylons-discuss?hl=en. -- Mike Orr <[email protected]> -- You received this message because you are subscribed to the Google Groups "pylons-discuss" 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/pylons-discuss?hl=en.
