1

セッションが設定されているかどうかを確認する必要があります...スタックオーバーフローのいくつかの解決策に従いましたが、まだ問題が存在します

if request.session.get('orderId',None):
    request.session['orderId']=ts
    orderId=request.session['orderId']
else:
    orderId=request.session['orderId']

それは、else のすぐ下の行の orderId で keyError と言っています。

4

2 に答える 2

3

あなたの条件は逆です。次のように反転してみてください。

if not request.session.get('orderId', None):
    request.session['orderId'] = ts
    orderId = request.session['orderId']
else:
    orderId = request.session['orderId']

.get('orderId', None)が返さNoneif not request.session.get('orderId', None)、セッションにデータを入力するように指示されます。これは (おそらく) あなたが望んでいたものです。

より良い方法は

orderId = request.session.setdefault('orderId', ts)

これはorderId、存在する場合はセッションから取得します。それ以外の場合は、セッションにデータを入力しtsて返します。

于 2012-05-08T05:08:16.757 に答える
1

get メソッドの全体的な考え方は、コードをきれいに保つことです。これはうまくいくはずです:

orderId = request.session.get('orderId',ts)

編集:

申し訳ありませんが、私はこれを逃しました:

orderId = request.session.get('orderId',ts)
request.session['orderId']=ts

if と else は必要ありません...

于 2012-05-08T05:11:28.923 に答える