2009-12-08 2 views
4

Я хотел бы развернуть динамический URL для моего приложения двумя способами:Динамический SEO-дружественные URL-адреса

  1. при просмотре доступного транспортного средства, я получаю ссылку как: http://www.url.com/2006-Acura-MDX-Technology-Package
  2. У меня также есть страница фильтра , поэтому здесь URL-адрес будет изменяться в соответствии с выбранными фильтрами: http://www.url.com/2007-Nissan или http://www.url.com/2007-Nissan-Maxima и т. д. в зависимости от выбранных пользователем фильтров.

Каков наилучший способ сделать это?

EDIT 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

если у вас есть объект базы данных, соответствующий одной странице (например, вид транспортного средства и таблица DB транспортного средства), вы можете использовать метод get_absolute_url() в классе модели.

больше get_absolute_url: http://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) 

всякий раз, когда вы работаете с объектами транспортного средства, вы можете получить полный 'сео дружественный' URL ...


мой наивный подход для фильтра будет:

  • написать соответствующее регулярное выражение в urls.py, либо проходя по всему строковому значению в функцию представления для дальнейшей отправки или разработки регулярных выражений, чтобы быть последовательными и структурированными ..

    (r'^filter/(?P<name>[a-zA-Z]+)/(?P<year>\d+)/(?P<type>\d+)/$)', ... 
    
  • сделать соответствующий DB запросами

  • дисплей ..
+0

Мне удалось найти решение ... thnx – Stephen