You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中Slug字段不支持孟加拉语如何解决?孟加拉语Slug正确使用方法

Django 孟加拉语Slug适配方案

核心原因

Django 内置的 slugify 工具默认会过滤所有非ASCII字符,导致孟加拉语等非英文内容生成Slug时会被清空或无法正常保留。

解决方案

1. 直接修改Slug生成逻辑

只需要在调用slugify时添加allow_unicode=True参数即可保留Unicode字符,适配孟加拉语内容,修改后的完整模型代码如下:

import datetime
from django.utils.text import slugify

class Post(models.Model):
    title = models.CharField(max_length=140)
    category = models.ForeignKey(Category, on_delete=models.DO_NOTHING)
    content = RichTextField(default="")
    image = models.ImageField(upload_to="media/post")
    url = models.SlugField(unique=True, max_length=250, null=True, blank=True)
    likes = models.IntegerField(default=0)
    created_date = models.DateTimeField(auto_now_add=True)
    update_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return f"{self.title}"

    def save(self, *args, **kwargs):
        if not self.url:
            slug_str = f"{self.title}-{datetime.datetime.now()}"
            # 新增allow_unicode参数允许Unicode字符,保留孟加拉语内容
            self.url = slugify(slug_str, allow_unicode=True)
        return super().save(*args, **kwargs)

2. 注意事项

  • 该参数在Django 1.9及以上版本均原生支持,无需额外安装第三方依赖
  • Django 2.0及以上版本的SlugField默认支持Unicode字符输入,无需修改字段定义
  • 当前逻辑通过拼接时间戳已经可以大概率避免Slug重复,若要完全避免重复,可以添加校验逻辑:生成Slug后先查询数据库是否存在重复,存在则追加随机字符串后再存储。

内容的提问来源于stack exchange,提问作者Sourav Ganguly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:15:03