我正在尝试访问Pyramid应用程序中的request.param
。
我看到了一个关于复选框的主题,但没有人谈论“选择”HTML标记。
在金字塔视图一侧,这是我的代码中收集参数的部分:
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'])
在Mako模板方面,我的表单是一个简单的HTML语句:
<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>
每当我尝试访问'profile'参数时,我都会遇到KeyError...
例外。
任何人都可以帮我解决这个问题吗?
更新:今天早上我无法得到KeyError
Mako投掷......也许我的同事解决了这个问题,我需要检查最后的提交。现在用户被创建了一个好方法,但是当我将应用程序用户重定向到相同的表单(带有验证消息)时,我无法在语句中显示好处。很抱歉给您带来不便......
答案 0 :(得分:1)
我不确定,但是profile参数可以是unicode而不是str。但如果它只发生在“个人资料”而不是其他人,我不确定。
答案 1 :(得分:1)
如果没有看到从视图返回的确切内容,很难确定,但如果在mako中抛出了一个键错误,通常意味着您没有从视图中返回该参数。例如:
@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}
在myform.mako中,您可以访问user.name,但如果您尝试访问user.profile,则会引发密钥错误。
答案 2 :(得分:0)
好吧,问题在我之前的一位同事的提交中得到纠正,现在我无法得到KeyError ...感谢您的帮助!