0

AttributeError私が現在取り組んでいるアプリでこれが奇妙になっています。私は開発Webサーバー、つまりdjangoツールセットの「runserver」コマンドを使用して開発しています。次に、 apache + mod-wsgiでアプリケーションをテストすることにしました。時々正常に動作しますが、このエラーが繰り返し発生します。ですから、そのコードには何か問題があるに違いないと思います。


だから私はそれをコメントアウトして何が起こるかを見ることにしました。そして、はい、それでも同じエラーが発生します(2番目の画像を参照)。<-今は関係ありません。カスタムユーザーモデルで取得しているAttributeErrorは、実際に含まれている場合でも、classmethod get_by_type_and_id()私が興味を持っているものです。


このように見たことがありますか?これを引き起こしているのは何だと思いますか?ここのチュートリアルに従ってデプロイしました。ただし、これUser は組み込みのdjangoUserモデルではないことに注意してください。Authこれは、djangoのモジュールに基づいた「カスタマイズされた、取り除いた」実装だと思います。

django独自の開発サーバーを使用した開発では、このエラーが発生していないことに注意してください。これは、Apache+mod_wsgiにアプリをデプロイした場合にのみ発生します。

より詳しい情報:

Djangoバージョン==1.2.5

ありがとう!どんな助けでも本当にありがたいです。

最初の写真: AttributeError

2枚目の写真: コメントアウトしたコードでもエラーが発生します

4

2 に答える 2

0

何時間もコードに飛び込んだ後、私はエウレカの瞬間がありました。django.contrib.auth.models.Userですから、ある時点で、アプリケーションで使用されているdjangoモジュールによってモデルが実行されているのではないかと思いました。前述したように、このアプリのユーザーモデルはカスタマイズされており、アプリケーションはdjango.contrib.auth.*少なくとも直接使用していません。この種のエラーはその特定の属性に固有のものではないため、これは私の疑いでした。その時点を通過することもありますが、他のユーザーモデル属性を参照する他のビューで別のAttributeErrorが発生します。その後、ある時点で、エラーメッセージのUserの属性がdjango.contrib.auth.models.Userの属性であることに気付きました。

そこで、Pythonパスでdjango.contrib.auth.modelsを「削除」することにしました。そこで、特に使用しているモジュールの1つでエラーが発生したことが示されましたdjango.contrib.messages。削除しましたが、AttributeErrorが再び表示されません。djangoのMessageモデルにはdjango.contrib.auth.models.Userへのforeign_keyがあることがわかりました。

しかし、その後、特にHttpResponseRedirectを使用してビューで使用している場合、つまり、テンプレートのコンテキストに有用なメッセージを配置する方法がない場合、djangoメッセージフレームワークの柔軟性が失われました。または多分ありますか?:)

UPDATE 2(Pretty Sure Now):

はい、それがエラーの原因であると確信してdjango.contrib.messagesいます。カスタマイズされたユーザーモデル、つまりdjango.contrib.auth.models.Userを使用しない別のアプリケーションでエラーを再現してみました。django.contrib.messagesモジュールを有効にしたところ、基本的に同じエラーが発生しました。なぜこれがApache+mod_wsgiで発生するのか知りたいのですが、django自身の開発サーバーでは発生しません。

于 2013-02-02T10:57:50.877 に答える
0

注意すべき点はほとんどありません。

  • get_by_type_and_idユーザーのための方法があると確信していますか?
  • (タイプミス)paswordの代わりに設定しますpassword
  • 2番目のスクリーンショットで60行目をインデントする必要があると思います
于 2013-02-02T11:11:09.163 に答える