2011-08-11 4 views
1

Djangoを初めて使用しています。 Djangoは各コントローラ/アクション(Djangoの用語のビュー/機能)ごとに1つのURLマッピングルールを定義する必要があると思われます。 RailsスタイルのURLルーティング、または少なくともweb2pyスタイルのURLルーティングを実装する最も簡単な方法は何ですか?DjangoでのRailsまたはweb2pyスタイルのURLルーティング


Railsまたはweb2pyスタイルのURLルーティングがわからない場合。

  • Rails RESTful URL routing
  • web2pyのURLルーティング:機能自動的Cコントローラへhttp://domain.com/C/Aマップ。

答えて

0

Django URL dispatcherのドキュメントを参照することをおすすめします。そこには、あなたの問題を解決するためのたくさんの方法があります。しかし、あなたのURLを定義するより速い方法で迅速な答えを探しているなら、私はView Prefixesを見て、あなたが見るかもしれない膨らみのいくつかを減らします。

あなたはRESTで探しているなら、私はこのarticleでご覧になることをお勧めします。あなたが何をしようとして

+1

私はDjangoのドキュメントを読んを持っています。でも見るPrefixes' 'で、あなたはまだだけではなく、のようなものを言っての、機能ごとに1つのルートを定義する必要があります'(R '+ W \ ^(?P )/(?P \ +)/ $ w' は、コントローラ+」 '+ action) ' – Ethan

2

Django's design philosophyに対して明示的に行く:「Python関数名にURLを結びつけることは悪いと醜いものです。」だから私はあなたには2つの簡単な選択肢と1つの難しい選択肢があると思います。

#1簡単:#2簡単レール

とスティック:ビューごとに1つのURLのルールを:使用すると、ジャンゴが通常使用される方法をジャンゴ。

難しい:URLに基​​づいビューメソッドをルックアップするためにイントロスペクションを使用して、一般的なURLディスパッチャを書きます。安全にしてください。あなたが終わったらそれを分かち合いましょう。 :)

は、あなたがそれを行うべきではないとは言いません。しかし、あなたがこれを行う簡単な方法を探しているなら、私はあなたが不満を感じると思う。

+0

「ビューごとに1つのURLルール」が「CoC」または「DRY」のいずれかです。少なくとも、すぐに使用できる汎用ルールを指定する方法を提供する必要があります。 – Ethan

+0

私はジャンゴがCoCに従うと主張したとは思っていません。それはレールです。 Djangoは暗黙のうちに明示的に好むことをほとんど常に好むが、それはちょっと反対である。私はそれが良い、または良いことを言っているわけではないが、それはあなたのためのジャンゴです。URLとコード間の間接的な複数のレベルは、djangoの最悪の機能のうちの1つです。だから私はこれがあなたを悩ませるなら、ジャンゴはあなたのためのフレームワークではないかもしれないと言っているのです。 – Leopd

1

カスタムな方法で簡単に書くことができます - URLを受け入れ、それを解析し1のビューを作成します。必要なモジュールをロードします。すると、urls.pyファイルには1つのルールしかありません。urls.pyファイルは1つのビュー関数を呼び出します。

また、あなたが持っている問題....

を解決するために、おそらくミドルウェアを作成することができますしかし、私はそうすることをお勧めしませんし、私はそれはDjangoが使用するルーティングのスタイルに固執するのがベストだと思います。どうして?後でカスタムURLリゾルバについて考える必要があるので、{%url%}テンプレートタグを使用することはできません(あなたはカスタマイズしません)。それは決定誰で、私はここで何かを改革する価値はないと思う...しかし、これは私の意見です:)

楽しい:)

関連する問題