2009-12-08 12 views
4

Je voudrais déployer URL dynamique pour mon application de deux façons:dynamique URL SEO-friendly

  1. lors de l'affichage véhicule disponible, je reçois un lien comme: http://www.url.com/2006-Acura-MDX-Technology-Package
  2. J'ai aussi une page de filtre , donc ici, l'URL va changer en fonction des filtres sélectionnés comme: http://www.url.com/2007-Nissan ou http://www.url.com/2007-Nissan-Maxima et ainsi de suite en fonction des filtres que l'utilisateur a choisi.

Quelle est la meilleure façon de procéder?

EDIT 1

Cela fonctionne maintenant

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) 

Puis, dans mon modèle j'ai:

<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> 

Tout ce qui reste est d'obtenir le nombre d'actions est passé à la vue détaillée. .. jusqu'à présent, je l'ai fait comme ça:

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

Répondre

1

si vous avez une entité de base de données correspondant à une page (par ex. vue du véhicule et une table DB véhicule), vous pouvez utiliser la méthode get_absolute_url() définir dans la classe de modèle.

plus sur get_absolute_url: http://docs.djangoproject.com/en/dev/ref/models/instances/#get-absolute-url

par exemple:

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) 

chaque fois que vous travaillez avec des objets de véhicule, vous pouvez obtenir l'URL complète 'seo-friendly' ...


mon approche naïve pour le filtre serait:

  • écrire un regex approprié urls.py, soit en passant d'une valeur de chaîne entière à une fonction d'affichage pour réexpédition ou la conception du regex d'être cohérent et structuré ..

    (r'^filter/(?P<name>[a-zA-Z]+)/(?P<year>\d+)/(?P<type>\d+)/$)', ... 
    
  • faire des requêtes DB appropriées

  • affichage ..
+0

J'ai réussi à trouver une solution ... thnx – Stephen