Django で階層 URL をどのように処理しますか? そのためのベストプラクティスはありますか? 例えば。/blog/category1/category2/myblogentry
(django-mptt などを使用して)のような URL がある場合、事前にチェックを行うかurls.py
、ビューへのパス全体を指定して、有効なカテゴリであるかどうかすべての部分をチェックさせてください。それほど難しくはないように思えますが、誰かがベスト プラクティスを推奨したり、優れた (一般的な) ソリューションを示したりできるか知りたいですか?
1326 次
2 に答える
2
あなたの質問に対する唯一の答えはないのではないかと心配しています。問題は、URL レベルで階層がどのように見えるかを指定すると、あまりにも多くのロジックがバンドルされることです。
ユーザーデコレーターにとって便利だと思いました。たとえば、あなたの場合、カテゴリの健全性をチェックするデコレータを作成し、最終的なカテゴリのみをビューに渡すことができます。この署名で関数を取ることができるデコレータのようなもの:
f(request, cat1, catN..., slug)
各カテゴリが実際に次のカテゴリの親であることを確認し、最終的にチェックされたカテゴリをビューに渡します。
@validate_category_hierarchy
def post_in_category(request, category, slug):
拡張可能であることが本当に必要な場合、デコレーターは少し内省し、いくつかの推測を行うことができます (ツリーの深さ、残りのパラメーターはどのようなものかなど)。
あとは、デコレーターが適切な形でパラメーターを取得できるように、URL conf を注意深く記述するだけです。合格
于 2010-07-03T03:38:04.977 に答える
1
これはhttp://djangosnippets.org/snippets/362/も便利です。デコレータなしで URL が一致するかどうかのチェックを解決できます。
于 2012-05-15T08:22:14.663 に答える