django - django 中漂亮且 seo 友好的 url

标签 django url seo

我目前正在写一个网络博客,学习 Django。我需要一个 View 来显示单个博客文章,我的第一次尝试是为它创建一个 url,如下所示:

myblog.com/blog/view/1

这使用博客 ID 来标识指定的博客文章。

现在如果你看很多博客/网站,你会发现他们在 url 中使用博客文章的标题,这是因为这对搜索引擎更友好,所以更容易找到。这可能看起来像这样。

myblog.com/blog/view/a-python-backup-script

我如何在 Django 中实现它?

奖金问题: 许多网站还包括帖子的月份和年份。我想这也与 SEO 有关,但这到底有什么用?

最佳答案

向您的博客模型添加一个 slug 字段。

from django.template.defaultfilters import slugify

Class Blog(models.Model):
    title = models.CharField(max_length=40)
    slug = models.SlugField(_('slug'), max_length=60, blank=True)

    #Then override models save method:
    def save(self, *args, **kwargs):
        if not self.id:
            #Only set the slug when the object is created.
            self.slug = slugify(self.title) #Or whatever you want the slug to use
        super(Blog, self).save(*args, **kwargs)

在你的 urls.py 中

(r'^blog/view/(?P<slug>[-\w]+)/$', 'app.views.blog_view'),

在 views.py 中

def blog_view(request, slug):
    blog = Blog.objects.get(slug=slug)
    #Then do whatever you want

编辑:我在保存方法中添加了一个检查,因为您希望在创建对象时创建 slug。不应该每次都保存。

关于django - django 中漂亮且 seo 友好的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11879416/

相关文章:

html - 如何正确使用H标签?

html - SEO mod_rewrite 内部 uri 目录问题

带有 Axios 的 Django CSRF token

django - 如何导入 Django DoesNotExist 异常?

url - URL 中是否允许扩展 ASCII 字符 [äöå]?

php - 如何对网站 URL 中的内容 ID 号进行 Imgur 式混淆? (PHP&MySQL)

Django - 在多个数据库之间同步数据

python - Django 中的 "Manager"是什么?

http - URI 中 (./) 的含义?

seo - 如果您直接 301 将站点地图托管在不同的域上,它会损害 SEO 吗?