3

request.paramPyramid アプリケーションでにアクセスしようとしています。

チェックボックスに関するトピックを見ましたが、「select」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>  

「プロファイル」パラメーターに到達しようとするたびに、KeyError...例外が発生しました。

誰でもこれを解決するのを手伝ってもらえますか?


更新:KeyError今朝 Mako がスローしていたことがわかりません...同僚がこれを修正したのかもしれません。最後のコミットを確認する必要があります。これでユーザーは適切に作成されましたが、アプリケーション ユーザーを同じフォーム (検証メッセージ付き) にリダイレクトすると、ステートメントに適切なものを表示できません。ご不便おかけしてすみません...

4

3 に答える 3

1

よくわかりませんが、プロファイル パラメーターは str ではなく unicode である可能性があります。しかし、それが「プロファイル」でのみ発生しており、他の人では発生していない場合はわかりません。

于 2012-12-10T16:11:00.400 に答える
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 にアクセスしようとするとキー エラーがスローされます。

于 2012-12-10T16:25:26.370 に答える
0

さて、問題は私の同僚の 1 人からの以前のコミットで修正されましたが、今は KeyError を取得できません... 助けてくれてありがとう!

于 2012-12-11T10:56:16.547 に答える