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

Django Slugify土耳其字符转换问题:需生成无变音拉丁字符Slug

解决Django中土耳其语字符的Slug转换问题

核心思路是手动映射土耳其特殊字符到对应拉丁字符,再调用Django的slugify方法,就能得到符合需求的纯拉丁Slug。

具体实现步骤:

  1. 定义土耳其语特殊字符与普通拉丁字符的映射字典,覆盖所有需要转换的字符(包括大小写)
  2. 在模型的save方法中,先替换字符串里的特殊字符,再生成Slug

修改后的完整模型代码:

class FirmaKategori(models.Model):
    kategori = models.CharField(max_length=250)
    description = models.CharField(max_length=5000)
    slug = models.SlugField(max_length=250, null=False, unique=True)  # 无需设置allow_unicode=True

    def __str__(self):
        return self.kategori   
  
    def get_absolute_url(self):
        return reverse('firma-kategori-ekle')  

    def save(self, *args, **kwargs):
        # 土耳其语字符到拉丁字符的映射表
        turkish_to_latin = {
            'ı': 'i', 'İ': 'I',
            'ş': 's', 'Ş': 'S',
            'ğ': 'g', 'Ğ': 'G',
            'ü': 'u', 'Ü': 'U',
            'ö': 'o', 'Ö': 'O',
            'ç': 'c', 'Ç': 'C'
        }
        # 替换所有特殊字符
        cleaned_kategori = self.kategori
        for turkish_char, latin_char in turkish_to_latin.items():
            cleaned_kategori = cleaned_kategori.replace(turkish_char, latin_char)
        # 生成标准Slug
        self.slug = slugify(cleaned_kategori, allow_unicode=False)
        super().save(*args, **kwargs)

效果说明:

  • 输入Takım Tezgahları会生成takim-tezgahlari
  • 输入Ulaşım Sektörü会生成ulasim-sektoru
  • 所有土耳其特殊字符都会被精准替换为对应普通拉丁字符,不会出现字符被省略的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:40:27