2011-09-13 20 views
2

私は、私が思いついたURLについて私があまり確信していない世界に落ちていることがよくあります。主に、私はdjangoのURLデザインに関するいくつかの質問が未解決のまま残っているからです。DjangoのURLのデザイン

私のサイトユーザーの公開プロフィールページを作成しました。ユーザーIDを指定するとアクセスできます。ユーザーIDがURLの一部(例:/profile/<userid>/)であるか、クエリ文字列(/profile?userid=<userid>)で提供されるべきですか?なぜ?

私はプロジェクトでAJAXを広く使用しています。 AJAX URLは、対応するURLとは異なるデザインにする必要がありますか?この目的のためのデザインパターンはありますか?

答えて

5

ここでは固くて速いルールはありません。私は、合理的に静的なものは/profile/<userid>/形式を使用すべきだと言いたい。 GETパラメータ - ?userid=<userid> - 動的である、URLの一部としてエンコードするのが難しい(検索用語のセットなど)、または一度にいくつかのパラメータが必要な場合に予約する必要があります。注文。

+0

動的な基準と静的な基準は良い例です! – jathanism

+0

これは、検索のためのいくつかの基準のようなオプションのパラメータを持つビューをGETパラメータとして渡す必要があることを意味しますか?また、各リソースをURLで表現するか、この場合は有効な考慮事項ではないという、よりRESTのようなアプローチで議論することもできますか? – GorillaPatch

3

Djangoはクエリ文字列の使用を嫌って、きれいなURLの使用を奨励しています。 URLconfに正しく設定するだけです。もしあなたがDjango Book(オンラインで自由に利用可能)を読んでいないなら、あなたはすべきです。それはchapter 3にこのについて語る:

A WordをPHPやJavaなどの別のWeb 開発プラットフォームで経験している場合はかなりのURL

、について、あなたはちょっと」、思考することができます、 のは、クエリ文字列パラメータを使用してみましょう「 - !時間がURLのクエリ文字列に 時間パラメータで指定されるであろうに /time/plus?hours=3、のようなもの(後に一部を?)。

Djangoでこれを行うことができます(第7章で説明します)。 Djangoの中核的な考え方の1つは、URLを美しくすることです。 URL /time/plus/3/ははるかにクリーンで、シンプルで、読みやすく、簡単です。 誰かに朗読して...その質問よりもかなりきれいです。 文字列の相手です。かなりのURLは、品質Web アプリケーションの特徴です。

DjangoのURLconfのシステムではありませんが、それよりもより簡単に 使用プリティURLをすることによって、かなりのURLを奨励しています。

この章では、どのように、なぜこれを行うには詳細!

+0

おかげであなたを願っています。 – tamakisquare

+0

Django Bookでは、東武から以下のコメントを頂きました。 "かなりのURLには一つの欠点があります:クォートされていないものがあります(http://tools.ietf.org/html/rfc3875#section-4.1.5を参照)。引用符で囲まれていないと、パーセントエンコードと比較して情報が失われることがあります。 %2B%2B + Javaは、URLとキャプチャでC+++ Javaになります。 – tamakisquare

+0

Django Bookの別の良い点は、BDPによって言及されています。 "かなりのURLが多くの検索エンジンのインデクサーにとって「見栄えがよく」見えるので、かなりのURLに検索エンジンの最適化の利点があることにも注意してください。 – tamakisquare

2

私はいくつかの時間前に同じ疑問を持っていたし、私の会社のプロジェクトリーダーが私を言った:

貴様のURLの無限の量を避けるようにしてください

をので、いくつかのパラメータを生成することができる場合無限差分URLの場合は、タイムスタンプなどのパラメータとして(.com?param =)のように送信する必要があります。タイムスタンプには無限の量があるので、それはパラメタでなければなりません。

一方、1つのオブジェクトIDなどの値があります。あなたがURLにIDを入れた場合、最悪の場合、無限のURLではなく、IDと同じ量のURLを生成することができます。この場合、IDは、URLに含めることができます(このように://ビュー.COM /コンテンツ)

このシンプルなフレーズは私をたくさん助けた、私は)=あまりにも参照のため