Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pyramid "select" form input raise a KeyError [closed]

I am trying to access a request.param in my Pyramid application.

I saw a topic about checkboxes, but nobody talked about the "select" HTML tag.

On the pyramid view side, here is the part of my code which gathers the parameters:

if 'form.submitted' in request.params: # user
    user = User(request.params['nickname'],
                request.params['lastname'],
                request.params['firstname'],
                request.params['email'],
                request.params['password'],
                request.params['profile'])

On the Mako template side, my form is a simple HTML statement:

<select name="profile">
    % for profile in p:
        % if profile is u.profile:
            <option selected>${profile.name}</option>
        % else:
            <option>${profile.name}</option>
        % endif
    % endfor
</select>  

Every time I try to reach the 'profile' parameter, I got a KeyError... exception.

Can anyone help me to solve this?


UPDATE: I can't get the KeyError Mako was throwing this morning... Maybe my co-worker fixed this, I need to check the last commits. Now the user is created the good way, but when I redirect the application user to the same form (with a validation message), I can't display the good in the statement. Sorry for the inconvenience...

like image 407
Julien Tanay Avatar asked Nov 20 '25 23:11

Julien Tanay


1 Answers

Difficult to tell for sure without seeing what exactly is returned from the view, but if a key error is being thrown in mako, it usually means you are not returning that parameter from the view. For example:

@view_config(route_name='myform', renderer='myform.mako')
def myform(request):
   if request.POST:
       # do stuff with submitted form ...       
   user ={'name': 'bob'}
   return {'user': user}

within myform.mako you can access user.name, but a key error is thrown if you try to access user.profile.

like image 128
Brian Cajes Avatar answered Nov 22 '25 11:11

Brian Cajes