Django - 生成默认的 slug

django

1个回答

写回答

Xby121001

2025-06-25 04:20

+ 关注

Django
Django

Django - 自动生成默认的 slug

在开发网站或博客时,我们经常需要为文章或页面创建唯一的标识符。而在 Django 框架中,slug 是一种常用的标识符形式,它通常用于 URL 中,能够提高搜索引擎优化(SEO)的效果。Django 提供了一个方便的方法来自动生成默认的 slug,本文将介绍如何 ,并添加案例代码来演示。

首先,我们需要安装 Django,并创建一个新的 Django 项目。在终端中执行以下命令来安装 Django

pip install Django

然后,在终端中执行以下命令来创建一个新的 Django 项目:

Django-admin startproject myproject

接下来,进入项目目录并创建一个新的应用:

cd myproject

Python manage.py startapp myapp

现在,我们可以开始编写代码了。打开 myapp 目录下的 models.py 文件,并添加以下代码:

Python

from Django.db import models

from Django.utils.text import slugify

class Article(models.Model):

title = models.CharField(max_length=200)

content = models.TextField()

slug = models.SlugField(blank=True)

def save(self, *args, <strong>kwargs):

if not self.slug:

self.slug = slugify(self.title)

super().save(*args, </strong>kwargs)

在这段代码中,我们定义了一个 Article 模型,包含标题(title)、内容(content)和 slug 字段。在保存 Article 实例时,如果 slug 字段为空,则使用 title 字段自动生成一个 slug,并将其赋值给 slug 字段。

接下来,打开 myproject 目录下的 settings.py 文件,并将 myapp 添加到 INSTALLED_APPS 中:

Python

INSTALLED_APPS = [

...

'myapp',

...

]

然后,在终端中执行以下命令来创建数据库表格:

Python manage.py makemigrations

Python manage.py migrate

现在,我们可以使用 Django 的管理界面来创建一篇文章并查看自动生成的 slug。在终端中执行以下命令来启动开发服务器

Python manage.py runserver

然后,在浏览器中访问 http://localhost:8000/admin/,使用创建超级用户的命令来登录管理界面:

Python manage.py createsuperuser

接下来,在管理界面中创建一个 Article 对象,并填写标题和内容字段。保存后,你将看到 slug 字段已经根据标题自动生成并填充了相应的值。

案例代码

下面是一个简单的示例代码,演示了如何 ,并自动生成 slug:

Python

from Django.db import models

from Django.utils.text import slugify

class Article(models.Model):

title = models.CharField(max_length=200)

content = models.TextField()

slug = models.SlugField(blank=True)

def save(self, *args, <strong>kwargs):

if not self.slug:

self.slug = slugify(self.title)

super().save(*args, </strong>kwargs)

在这个例子中,我们创建了一个 Article 模型,包含了标题、内容和 slug 字段。在保存 Article 实例时,如果 slug 字段为空,则使用 title 字段自动生成一个 slug,并将其赋值给 slug 字段。

通过上述示例代码,我们可以方便地在 Django 中生成默认的 slug,并在网站或博客中使用它来标识文章或页面。这样,不仅可以提高用户体验,还可以提升搜索引擎优化的效果。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号