0

セッションを使用して、あるページから別のページにデータを渡そうとしています。これがajax.pyに書いたコードです。

def save_cookie(request, query):
    request.session['query'] = query

しかし、この dajaxice 関数を呼び出すと、エラーが発生します。HTMLページでdajaxiceを使用しようとすると、エラーメッセージは常に「sth going wrong」になることは誰もが知っていることです。save_cookie をデバッグしようとしましたが、作成したモック リクエスト オブジェクトにセッション属性がありません。ただし、 request.session="blah" を実行すると、うまくいきました。save_cookie(request,query) を直接使用する場合。リクエスト オブジェクトに属性がないというエラー メッセージが表示されます...

コードは簡単です。私はそれに間違いを見ませんでした。誰かが原因を知っていますか?

4

2 に答える 2

0

dajaxice / dajaxを使用したことがないので、ここでは本当に役に立ちません。ほんの数点:

  • セッションサポートを有効にしましたか(そして適切に構成しましたか)?https://docs.djangoproject.com/en/1.3/topics/http/sessions/

  • ロギングモジュール(またはプレーンな「print」ステートメントですが、トレースバック全体はありません)を使用して、例外をトレースできます。

    def save_cookie(request、query):try:request.session ['query'] =例外を除くクエリ、e:print e raise

printステートメントの出力は、開発サーバーを起動したシェルに表示されます(開発サーバーで作業していると仮定します...開発サーバーで作業していると思いますか?)

  • 引き続き開発サーバーを使用している場合は、pdbを使用してインタラクティブデバッグに切り替えることができます。

    def save_cookie(request、query):import pdb; pdb.set_trace()request.session ['query'] = query

次に、ブラウザでURLにアクセスし、シェルに戻って、リクエストと(存在する場合は)request.sessionオブジェクトなどを検査できるpdbセッションに移動します。

注意:Apacheまたはその他のWebサーバーの背後で実行している場合は、これを行わないでください。組み込みの開発サーバーを使用する場合のみです。

  • 「request.session='blah'」は、「request」オブジェクトが存在しない場合は「session」属性を作成するため(すでに存在する場合は実際の「session」オブジェクトを置き換える可能性があります)、どちらも有効なテストではありません。賢明なことでもありません

私の2セント...

于 2012-05-25T12:14:58.213 に答える
-1

免責事項:私はdajaxiceについて何も知りません。

以下は、モックリクエストオブジェクトで機能します。

def save_cookie(request, query):
    if not hasattr(request, 'session'):
        request.session = dict()
    request.session['query'] = query
于 2012-05-25T12:08:12.927 に答える