0

私のプロジェクトのほとんどのビューは、オプションのユーザー名パラメーターを受け入れ、存在する場合は、そのユーザーのテンプレートに渡されるクエリセットをフィルター処理します。したがって、たとえば:

インデックスビューは、次の両方のURLパターンを処理します。

'^$' # general index page
'^(?P<username>[-\w]+)/$' # index page for the user

'^photos/$' # photo index page
'^(?P<username>[-\w]+)/photos/$' # photos for that user
...

このようなアプリケーションは多数あるため、パターンを複製して同じロジックを実装するのはそれほど難しいとは思えません。メインのurls.pyモジュールを再帰的に含めることができるかもしれないと思ったので、これを行いました。

url(r'^(?P<username>[-\w]+)/', include('urls')),

私の推論は、他のurlsモジュールが含まれている場合、一致したパターンがパスから削除されるというものでした。だから、私はそれを望んでいました

'^(?P<username>[-\w]+)/photos/$'

になります

'^photos/$'

追加のusernameパラメーターを使用して、再帰的に含まれるurlsモジュールと一致する場合。しかし、これにより、要求が行われたときに開発サーバーがサイレントに停止しました。

私が考えることができる2番目のアプローチは、URLのパターンに一致するミドルウェアを作成し、表示されたユーザーをリクエストに追加し、ユーザー名に一致する部分をリクエストパスから削除することです。しかし、これは予測できない結果をもたらす可能性があるため、パスを台無しにしたくありません。

あなたは何をお勧めします?私は乾燥にうるさいですか?

ありがとう、oMat

4

1 に答える 1

1

同じファイルで正規表現を文字列として定義し、文字列連結を使用するだけです!

user_regex = r"^(?P<username>[-\w]+)/"

次に'%s/photos$'%user_regex、正規表現を一度だけ定義して、非常にドライに保つように正規表現を実行できます。

また、url タグ内に urls.py パターンを含める理由は正しく、なぜ失敗したのかわかりません。おそらく他のエラーですか?

于 2010-06-29T08:48:05.640 に答える