动态SEO友好的URL

时间:2009-12-08 11:06:18

标签: django django-urls seo

我想以两种方式为我的应用部署动态网址:

  1. 查看可用的车辆时,我会收到如下链接:http://www.url.com/2006-Acura-MDX-Technology-Package
  2. 我还有一个过滤器页面,因此,此处的网址会根据所选的过滤器进行更改,如:http://www.url.com/2007-Nissanhttp://www.url.com/2007-Nissan-Maxima等等,具体取决于用户选择的过滤器。
  3. 最好的方法是什么?

    编辑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 个答案:

答案 0 :(得分:1)

如果您有一个对应于一个页面的数据库实体(例如车辆视图和Vehicle DB表),则可以在模型类中使用define get_absolute_url()方法。

更多关于get_absolute_urlhttp://docs.djangoproject.com/en/dev/ref/models/instances/#get-absolute-url

e.g:

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”网址...


我过滤器的天真方法是:

  • urls.py中编写一个合适的正则表达式,将整个字符串值传递给视图函数以进一步调度或将正则表达式设计为一致且结构化。

    (r'^filter/(?P<name>[a-zA-Z]+)/(?P<year>\d+)/(?P<type>\d+)/$)', ...
    
  • 进行相应的数据库查询

  • 显示..