[英]Django Slugfield removing articles ('the', 'a', 'an', 'that')
我正在使用 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",)}
我注意到當我創建一個標題為“A boy and the pig”的章節時,我得到了“boy-and-pig”作為slug。 Django 正在從我的 slug 中剝離文章。 為什么會這樣?解決方法是什么?
為什么會這樣?
嗯,這是 Django 中Slugfield的默認行為。 為什么會這樣? 因為一般來說, 它被認為對 SEO 更好。
(我說考慮過,因為鏈接的文章提到這可能是過時的想法。前提是文章等通常被認為是停止詞,語言中最常見的詞;它們太常見了,對搜索沒有幫助引擎索引,因為它們在大多數(如果不是所有)標題中都有。)
解決方法是什么?
首先 - 你為什么要繞過它? 用例是什么?
但如果你滿意你真的想這樣做,那么這很簡單:
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'
這個答案對覆蓋標准字段和 slugfields 有一些很好的建議。
如果您不想自己動手,還有一個不錯的軟件包可以為您執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.