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("&", "&amp;") # 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.

Reply via email to