2009-12-08 211 views
4

我想有兩種方式部署動態的URL我的應用程序:動態SEO友好的URL

  1. 查看可用的車輛時,我得到一個鏈接,如:http://www.url.com/2006-Acura-MDX-Technology-Package
  2. 我也有一個過濾器頁面,因此在這裏,URL將根據所選過濾器更改,如:http://www.url.com/2007-Nissanhttp://www.url.com/2007-Nissan-Maxima等,具體取決於用戶選擇的過濾器。

這是怎麼回事?

編輯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]+)/$',.... 

回答

1

如果您有一個數據庫實體對應一個頁面(例如,車輛視圖和Vehicle DB表),您可以在模型類中使用define get_absolute_url()方法。

更多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) 

每當你與車載物的工作,你可以得到完整的 '搜索引擎友好的' 網址...


我的過濾器的天真方法將是:

  • urls.py適當的正則表達式,或者傳遞整個字符串值,爲進一步調度視圖功能或設計的正則表達式是一致的結構化..

    (r'^filter/(?P<name>[a-zA-Z]+)/(?P<year>\d+)/(?P<type>\d+)/$)', ... 
    
  • 做出相應的數據庫查詢

  • display ..
+0

我設法想出了一個解決方案... thnx – Stephen 2009-12-09 04:32:19