📅  最后修改于: 2023-12-03 15:37:19.590000             🧑  作者: Mango
在 Django 中,通常使用自增长的整数作为主键 (PK)。然而,在某些情况下,使用 Slug 或其他唯一标识符作为主键会更有用。
Slug 是一种用于 URL 的短、人类友好的字符串。在 Django 中,可以使用自带的 SlugField 或创建自定义的 Slug 类型来存储 Slug。
更人性化的 URL: 当用户看到 URL 中的 Slug 时,能够更容易理解该页面的内容。
保护隐私: 将 PK 作为 URL 中的参数可能会暴露数据库中的某些信息。使用 Slug 或其他唯一标识符可以避免这种情况。
简化 URL: 使用自增长整数作为主键,URL 中需要添加 /pk/
这一部分。使用 Slug 或其他唯一标识符可以简化 URL。
可以通过 Django 自带的 SlugField 或创建自定义模型字段来存储 Slug。
from django.db import models
from django.utils.text import slugify
class YourModel(models.Model):
name = models.CharField(max_length=1000)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.name)
super().save(*args, **kwargs)
在上面的例子中,我们使用了 slugify()
方法将名称转换为 Slug。我们还覆盖了默认的 save()
方法来自动创建 Slug。 请记住,Slug 应该是唯一的。
另一种方法是,可以在视图函数中使用唯一标识符作为 URL 参数。
from django.shortcuts import render, get_object_or_404
from .models import YourModel
def your_view(request, slug):
item = get_object_or_404(YourModel, slug=slug)
context = {'item': item}
return render(request, 'your_template.html', context)
在上述视图函数中,我们根据 Slug 获取数据库中的对象。
在某些情况下,使用 Slug 或其他唯一标识符作为主键会更有用。这能够提供更人性化的 URL、保护隐私以及简化 URL。使用 SlugField
或创建自定义模型字段可以实现 Slug。在视图函数中,也可以使用唯一标识符作为 URL 参数来获取对象。