私は自分自身を開発しましたが、他の誰かがおそらく最初にそれを考えて、より良い仕事をしたのは十分に素晴らしいことのようです ;)
目標は、myapp/views.py に書き込めるようにすることです。
router = Router(prefix=r'^myapp/')
@router.route(url=r'my/url/here', name="my-great-view")
def myview(request):
return render_to_response("mytemplate.html", {})
そしてurls.pyで
urlpatterns += myapp.views.router.get_patterns()
そして、私が組み込んだ他のいくつかのクールなデコレータがあります(返された辞書を取得してjson応答を作成するための@jsonview、返された辞書を取得して定義されたテンプレートにコンテキストとして渡すための@use_template...)
このようにして、すべてがよりローカライズされ、読みやすくなるようです。ビュー関数を見るとき、それが属する URL や「名前」を見つけるためにあちこち検索する必要はありません。
このdjangosnippetを見ましたが、それは私が望むよりもはるかに魔法であり、一般的に採用されているようには見えません。
誰も標準的な解決策をまとめていない場合、解決策を片付けて、contrib にプル リクエストを送信する必要がありますか?
- これが私が現在実装しているものです:magic.py
編集: 同じビューに複数の URL が必要な場合:
@router.route(url="my-first-url", kwargs={'foo':'bar'})
@router.route(url="my-second=url", kwargs={'foo':'baz'})
def my_view(...): ...
もちろん、これが唯一の方法である必要はありません。通常の urlpatterns の方法には 2 つの優れた点がありますが、これら 2 つの方法は相互に排他的ではありません。