doh, I'm an idiot and don't know python =)

that said, are flash messages the best system for this?  I don't need
them in a session queue or stored locally, I just need them for my
view code so I can stash them somewhere and have them show up to the
templating system in one shot.  I don't need them persisting between
calls, for example, it would just be nice to unify my error handling
code so I don't have to keep adding errors to the dictionary that I
hand over to mako.

that's why I thought I'd add a property to the request object.. it
seemed like it was created before my view code ran and destroyed only
after my templating system got a look at it.  but now I'm still not
seeing errors when I do:

class UserRequest(Request):
  def __init__(self, environ):
    super(UserRequest, self).__init__(environ)
    self.errors = {} # this is apparently too aggressive and we don't
see errors... why?

and doing stuff like request.errors['username'] = 'Username in use'

On Mon, Mar 7, 2011 at 9:44 AM, Daniel Nouri <[email protected]> wrote:
> On Mon, Mar 7, 2011 at 9:52 AM, Erik Goldman <[email protected]> wrote:
>> I'm designing a simple web app and I'd like a unified system for
>> storing errors to show in templates.
>>
>> What I did initially was to create a custom request factory:
>>
>>
>> class UserRequest(Request):
>>  errors = {}
>>
>> and then I simply do request.errors[name] = error_text and read from
>> that dictionary on the template side.
>>
>> The problem is that these errors seem to stick around... if I do
>> something that triggers an error, I get the page back with the error
>> text (great!) but then I surf to another page and type that URL back
>> into the address bar... and I get the error again.
>>
>> So then I tried:
>>
>>
>> class UserRequest(Request):
>>  errors = {}
>>
>>  def __init__(self, environ):
>>    super(UserRequest, self).__init__(environ)
>>    self.errors = {}
>>
>> but now I *never* see errors!!
>>
>> what's going on?  how do I fix this?
>
> You need to learn about the difference between class and instance
> variables in Python.  Check out
> http://docs.python.org/tutorial/classes.html
>
> I can only guess what went wrong when you set 'errors' on the
> instance, as with your second example.  I guess that you did not set
> and read the error in that order in the same request.  And that's
> perfectly fine.  What you want is use the Flash Messages API [1] and
> use the 'queue' argument as your 'name'.
>
> [1] 
> http://docs.pylonsproject.org/projects/pyramid/1.0/narr/sessions.html#flash-messages
>
> --
> http://danielnouri.org
>

-- 
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