在 Django 中使用动态网址的站点地图 - 模型属于多个动态网址的情况



我正在尝试构建一个包含我的动态网址的站点地图。我有一个位置模型,用于为特定餐厅(在给定位置)和给定位置的所有餐厅生成动态网址。

这两个网址分别是/restaurants/<restaurant-name-slug>/<location-name-slug>/restaurants/<ocation-name-slug>

如何为这两个网址生成动态网址,以便它们显示在我的站点地图文件中?似乎每个模型只能在get_absolute_url方法中的一个 url models.py

这是我models.py中的内容,它适用于/restaurants/<ocation-name-slug>网址,但不适用于其他网址:

class Location(models.Model):
    restaurant = models.ForeignKey(Restaurant)
    name_slug = ...
    city = ...
    longitude = ...
    ...
    def get_absolute_url(self):
        return reverse('view_restaurant', args=[self.name_slug])
    def __str__(self):              # __unicode__ on Python 2
        return self.name

我认为这里不需要"动态网址",更不用说多个了。而且没有必要将任何东西与get_absolute_url捆绑.

相反,您的 urls.py 中有两种完全标准的模式:一种用于餐厅,另一种用于餐厅位置。

urls = [
   url(r'^locations/(?P<location_slug>w+)/$', views.location, name='location'), 
   url(r'^restaurants/(?P<restaurant_slug>w+)/$', views.restaurant, name='restaurant'),
]

最新更新