python - Django Slugfield 删除文章 ('the' 、 'a' 、 'an' 、 'that' )

标签 python django

我使用的是 django 1.10 并且我有这样的设置:

class Chapter(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(unique=True)
    date_completed = models.DateTimeField(blank=True, null=True)

    completed = models.BooleanField(default=False)

    def __str__(self):
        return self.title

在管理员中,我有:

class ChapterAdmin (admin.ModelAdmin):

    list_display = ('title','slug', 'date_completed',)
    list_filter = ['title', 'date_completed']
    prepopulated_fields = {"slug": ("title",)}

我注意到,当我创建一个标题为“男孩和 pig ”的章节时,我得到的标题是“男孩和 pig ”。 Django 正在从我的 slug 中删除文章。为什么会这样?解决方法是什么?

最佳答案

为什么会这样?

嗯,这是 Slugfield, 的默认行为在 Django .为什么会这样呢?因为一般来说,it's been considered better for SEO .

(我说考虑过,因为链接的文章提到这可能是过时的想法。前提是文章等通常被认为 Stop Words ,语言中最常见的单词;它们是如此常见它们对搜索引擎索引没有帮助,因为它们出现在大多数(如果不是全部)标题中。)

周围的情况如何?

首先 - 为什么你想要绕过它?有什么用例?

但是如果您满意并且确实想要这样做,那么这很简单:

from django.template.defaultfilters import slugify
would_be_slug = 'This is one of those rarest of things: A blog that uses article.'
slugify(would_be_slug)
>>>u'this-is-one-of-those-rarest-of-things-a-blog-that-uses-article'

This answer has some great advice关于覆盖标准字段和 slugfields。

There's also a nice package如果您不想自己动手,这将为您完成此操作。

关于python - Django Slugfield 删除文章 ('the' 、 'a' 、 'an' 、 'that' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39545657/

相关文章:

python - django rest framework - 向后序列化以避免 prefetch_related

python - pycharm recnoizes 导入但仍然 ValueError : Attempted relative import beyond toplevel package django project on make migrations

带有 MySQLdb 的 Python Tkinter 列表框

python - 在使用 Apache 提供静态文件时添加自定义 header

javascript - Python 异步代码中的 Promise.race 等价物是什么?

jquery - Django ajax jquery 文件上传

python - 如何在 5 分钟内使 Django session 过期?

django - 使用 Google 字体的 Chrome 上的 CORS 错误

python - 将新查询请求 ?page=2 附加到现有查询 ?q=python

python - 教程生成信号量问题的 dbt 调试