在 django 中使用 slugify 后的详细页面错误

Posted

技术标签:

【中文标题】在 django 中使用 slugify 后的详细页面错误【英文标题】:Detail page error after using slugify in django 【发布时间】:2021-09-19 06:22:21 【问题描述】:

我在点击任何商品详情页面时收到此错误。 必须使用 URLconf 中的对象 pk 或 slug 调用通用详细视图。

网址:

path('item/<slug:item_slug>/', ItemDetailView.as_view(), name='item_detail'),

查看:

class ItemDetailView(DetailView):
    model = Item
    slug_field = 'item_slug'

型号:

class Item(models.Model):
    title = models.CharField(max_length=100)
    description= RichTextField(blank=True, null=True)
    main_image= models.ImageField(null=True, blank=True,upload_to='images/')
    date = models.DateTimeField(auto_now_add=True)
    item_category = models.ForeignKey(Categories, default='Coding', on_delete=SET_DEFAULT)
    slug = models.SlugField(unique=True, blank=True, null=True) # new

    

    def save(self, *args, **kwargs):
        if not self.slug and self.title:
            self.slug = slugify(self.title)
        super(Item, self).save(*args, **kwargs)

    def __str__(self):
        return self.title

【问题讨论】:

【参考方案1】:

URL 参数是用slug<b>_url_kwarg</b> [Django-doc] 指定的,而不是slug_fieldslug_field [Django-doc] 用于过滤查询集,因为您的模型使用 slug,所以您不需要更改它。

所以视图应该是这样的:

class ItemDetailView(DetailView):
    model = Item
    slug_url_kwarg = 'item_slug'

【讨论】:

你太棒了。我很感激。再次感谢您。

以上是关于在 django 中使用 slugify 后的详细页面错误的主要内容,如果未能解决你的问题,请参考以下文章

博客类别 Slugify 在 Django 中不起作用

django slugify 俄语字符串 [重复]

Django slugify url - 如何处理冲突?

django slugify 出错

python python django slugify

在 javascript 中使用 django 模板标签