📜  在 Django 模型中添加 slug 字段(1)

📅  最后修改于: 2023-12-03 14:50:54.415000             🧑  作者: Mango

在 Django 模型中添加 slug 字段

在 Django 中,slug 字段是用来存储模型实例的简短和可读性高的字段值,通常用于创建美观的 URL。

为什么使用 slug 字段

通过使用 slug 字段,我们可以将模型实例的名称或标题转化为一个可以成为 URL 的唯一字符串。这对于搜索引擎优化(SEO)和用户友好的 URL 是很重要的。而不使用 slug 字段,URL 将包含无法读取的参数,如数字 ID。

在 Django 中创建 slug 字段

首先,我们需要导入 slugify 函数和 models 模块:

from django.utils.text import slugify
from django.db import models

然后,在你的模型类中添加一个 SlugField,用于存储 slug 字段的值:

class MyModel(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(unique=True, null=True, blank=True)

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

上面的代码中,我们添加了一个 slug 字段,并将其设置为 SlugField 类型。我们还设置了 unique=True,以确保唯一性。null=Trueblank=True 表示该字段可以为空。

在我们的 save 方法中,我们使用 slugify 函数将 title 字段转化为 slug,并将结果赋给 slug 字段。然后,我们调用父类的 save 方法来保存模型实例。

使用 slug 字段

一旦我们在模型中添加了 slug 字段,我们可以在视图函数或模板中使用它来构建 URL。假设我们的模型是 MyModel,我们可以通过 slug 值来获取模型实例:

from django.shortcuts import get_object_or_404
from .models import MyModel

def my_view(request, slug):
    my_model = get_object_or_404(MyModel, slug=slug)
    # 其他操作

在上面的例子中,我们使用 get_object_or_404 函数根据接收到的 slug 值获取模型实例。然后,我们就可以在视图函数中进行其他操作。

在模板中,我们可以像这样使用 slug 字段:

<a href="{% url 'my_view' slug=my_model.slug %}">{{ my_model.title }}</a>

在这个例子中,我们使用 url 模板标签和模型实例的 slug 值来构建链接。

总结

通过在 Django 模型中添加 slug 字段,我们可以为模型实例创建用户友好的 URL。这有助于提高搜索引擎优化和用户体验。

以上就是在 Django 模型中添加 slug 字段的介绍,希望能帮助到你!