4

アプリの動的URLを次の2つの方法でデプロイしたいと思います。

  1. 利用可能な車両を表示すると、次のようなリンクが表示されます:http ://www.url.com/2006-Acura-MDX-Technology-Package
  2. フィルタページもあるので、ここでは、http://www.url.com/2007-Nissanまたはhttp://www.url.com/2007-Nissan-Maximaのように選択したフィルタに応じてURLが変更さますなど、ユーザーが選択したフィルターによって異なります。

これについて行くための最良の方法は何ですか?

編集1

これで動作するようになりました

def get_absolute_url(self):
    return u'%s-%s-%s-%s-%s' % (self.common_vehicle.year.year,
                                self.common_vehicle.series.model.manufacturer,
                                self.common_vehicle.series.model.model,
                                self.common_vehicle.series.series, 
                                self.stock_number)

次に、私のテンプレートには次のものがあります。

<a href="{{ vehicle.get_absolute_url }}/">
  <span class="vehicle-title">
    {{ vehicle.common_vehicle.year.year }}&nbsp;
    {{ vehicle.common_vehicle.series.model.manufacturer }}&nbsp;
    {{ vehicle.common_vehicle.series.model.model }}&nbsp;
    {{ vehicle.common_vehicle.series.series }}
  </span>
</a>

残っているのは、在庫番号を詳細ビューに渡すことだけです...これまでのところ、次のようにしています。

(r'^inventory/details/(?P<stock_number>[-\w]+)/$',....
4

1 に答える 1

1

1つのページに対応するデータベースエンティティ(たとえば、車両ビューと車両DBテーブル)がある場合はget_absolute_url()、モデルクラスでdefineメソッドを使用できます。

詳細get_absolute_urlhttp ://docs.djangoproject.com/en/dev/ref/models/instances/#get-absolute-url

例えば:

class Vehicle(models.Model):
    name = ...
    year = ...
    fancy_stuff = ...

    def get_absolute_url(self):
        return u'%s-%s-%s' % (self.year, self.name, self.fancy_stuff)

車両オブジェクトを操作しているときはいつでも、完全な「seo-friendly」URLを取得できます...


フィルタに対する私の素朴なアプローチは次のようになります。

  • に適切な正規表現を記述し、urls.py文字列値全体をビュー関数に渡してさらにディスパッチするか、一貫性のある構造化された正規表現を設計します。

    (r'^filter/(?P<name>[a-zA-Z]+)/(?P<year>\d+)/(?P<type>\d+)/$)', ...
    
  • 適切なDBクエリを作成します

  • 画面 ..
于 2009-12-08T11:16:53.080 に答える