2012-04-09 18 views
7

と一致しない私は、次のジャンゴURLを持っている:私はhttp://localhost:8000/companies/に行けばDjangoのURLをGET変数

url(r'^companies/$', 'companies', name='companies'), 

それが完璧に動作します。しかし、私は、URLのジャンゴに任意のGET変数を追加してみた場合は、私がhttp://localhost:8000/companies/?c=1ジャンゴに行けば例えば404は、提起する提起奇妙何404は、404にそれが言うことです:

現在のURL 、companies/は、これらのいずれとも一致しませんでした。

GET変数をURLに渡すことができないのはなぜですか?

私はdjango 1.4を使用しています。彼らは、変数ではなく、URLパラメータ - が正しいGETされているので、それは追加のパラメータを受け入れる必要はありません

def companies(request): 

企業が閲覧を同じように定義されて?私はこれを数百回やったことを誓い、それはいつもうまくいっています...

+0

おそらく、 'companies'関数はパラメータを受け入れないでしょうか?署名を表示してください。 –

+0

質問に追加されました。ちょうど 'def企業(リクエスト):' – dgel

答えて

7

大丈夫です。この非常に奇妙な振る舞いの原因を突き止めました。私はresolve(request.get_full_path())を呼び出しているカスタムコンテキストプロセッサを持っています。どうやら、URLにGET変数があると404が発生します。非常に奇妙な。

+0

'resolve'は' django.core.urlresolvers'からのものです – dgel

+2

これは明らかに既知の[issue](https://code.djangoproject.com/ticket/13855)です。 'resolve(request.path)'が動作し、404を修正します。 – dgel

+2

それは全く変わっていません。 'request.get_full_path()'は、URLパス*と*クエリ文字列を返します。しかし、 'resolve'は単純なURLパスしか期待していないので、*クエリ文字列を渡した文字列に一致するurlパターンを探します。明らかに、そのようなurlパターンは存在しないので、404を取得します。あなたが決定したように、クエリ文字列を含まないため、 'request.path'を使用する必要があります。 –

関連する問題