【问题标题】:How can I make Django slug and id work together?如何让 Django slug 和 id 一起工作?
【发布时间】:2023-03-08 15:38:01
【问题描述】:

我希望我的 URL 像 StackOverflow 一样包含 id 和 slug,但 slug 无法正常工作。而不是这样:

www.example.com/games/155/far-cry-5

网址是这样的:

www.example.com/games/155/<bound%20method%20Game.slug%20of%20<Game:%20Far%20Cry%205>>

我的模型.py:

class Game(models.Model):
    name = models.CharField(max_length=140)

    def slug(self):
        return slugify(self.name)

    def get_absolute_url(self):
        return reverse('core:gamedetail', kwargs={'pk': self.id, 'slug': self.slug})

我的views.py:

class GameDetail(DetailView):
    model = Game
    template_name = 'core/game_detail.html'
    context_object_name = 'game_detail'

我的 urls.py :

path('<int:pk>/<slug>', views.GameDetail.as_view(), name='gamedetail')

【问题讨论】:

    标签: django django-urls slug slugify


    【解决方案1】:

    调用 slug() 方法获取值。

    return reverse('core:gamedetail', kwargs={'pk': self.id, 'slug': self.slug()})
    

    或者将其定义为类的属性

    @property
    def slug(self):
        ...
    

    【讨论】:

      猜你喜欢
      • 2017-06-11
      • 1970-01-01
      • 2011-12-09
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 2017-09-19
      相关资源
      最近更新 更多