2012-04-11 7 views
2

これは私の頭を傷つけています。私はフォーム処理(ログイン/サインアップ)を行い、入力に基づいてさまざまなHttpResponseRedirect()を返すビューを持つアプリを持っています。これらのリダイレクトにはすべてreverse()ルックアップが含まれ、適切な機能が文字列としてリストされています。そして、すべての関数はurls.pyに対応するurlpatternを持っています。突然すべてのHttpResponseRedirect(reverse())が構文エラーを出しています

今朝まですべてがうまくいきました。

さて、私はフォームを送信するたびに、Djangoは私の存在しないラインの構文エラーを与える:

SyntaxError at /logout/ 
invalid syntax (views.py, line 399) 

(このファイルのみ354行を持っている)

私が見て下にスクロールするとトレースバックでは、強調表示されている行は常にreturn HttpResponseRedirect(reverse('app.views.func'))のものです。

これらの厄介なエラーメッセージのため、私は問題が本当にHttpResponseRedirect(reverse())であることさえ確信していません。私は数日でそのコードのどれにも触れていないので、なぜそれが突然そのような奇妙なエラーを投げ始めるのか分からない。

これをデバッグする助けがあれば幸いです!

+0

djangoの認証システムを使用していますか? –

+0

存在しない行ですか?コンパイルしたpythonファイルを削除してみてください。 'find/my/project/-name * .pyc | xargs rm' –

+1

あなたのスクリプトのようなサウンドは、あなたがアクセスしようとしているファイルにアクセスしていません。あなたの 'views.py'の名前を' _views.py'に変更して、Djangoがファイルが足りないと告げるかどうかを確認してください(別のディレクトリに別のファイルがあるなど)。 – bitmask

答えて

3

consulting the docs for the reverse()の機能の後についにそれを理解しました。

reverse()を呼び出すと、djangoはまずプロジェクトのURLConfファイルをインポートします。このファイルは、URLconfで宣言されているすべての単一のビューモジュールをインポートします。私の問題は、文法エラー(399行目!)があった、まったく関係のない新しいビューに取り組んでいたことでした。

新しいビューで何かを行っていたページを表示していないのに、私の古いビューは、まだreverse()の仕組みのために構文エラーでトリップしていました。

the docsから:

あなたの意見がすべて正しいことを確認してください。 の名前がどのパターンにマップされているかを調べるために、reverse()関数はURLconfファイルのすべてを にインポートし、各ビューの名前を調べなければなりません。これには、各ビュー機能をインポートする が含まれます。 ビュー機能のいずれかをインポートしている間にエラーが発生した場合、そのビュー機能が逆転しようとしていない場合でも、reverse()はエラー を発生させます。

URLconfファイルで参照するビューが存在し、 が正しくインポートできることを確認してください。これらのビューはインポートできないため、まだ書き込んでいないビュー を参照する行は含めないでください。

関連する問題