【问题标题】:slugify() got an unexpected keyword argument 'allow_unicode'slugify() 得到了一个意外的关键字参数“allow_unicode”
【发布时间】:2019-12-11 21:13:10
【问题描述】:

当我想从product 创建新对象时,我收到了这个错误:

slugify() got an unexpected keyword argument 'allow_unicode'

这是我的模型:

class BaseModel(models.Model):
    created_date = models.DateTimeField(auto_now_add=True)
    modified_date = models.DateTimeField(auto_now=True,)
    slug = models.SlugField(null=True, blank=True, unique=True, allow_unicode=True, max_length=255)
    class Meta:
        abstract = True


class Product(BaseModel):
    author = models.ForeignKey(User)
    title = models.CharField()
     # overwrite your model save method
    def save(self, *args, **kwargs):
        title = self.title
        # allow_unicode=True for support utf-8 languages
        self.slug = slugify(title, allow_unicode=True)
        super(Product, self).save(*args, **kwargs)

我也为其他应用程序(博客)运行了相同的模式,我没有遇到这个问题。 这个应用有什么问题?

【问题讨论】:

  • 您可能已经在某处覆盖了slugify,方法是导入名称为slugify 的其他内容,或者在该文件中定义名称为slugify 的函数或类。
  • 天哪!你是对的!我在我的博客应用程序的models.py 和商店应用程序中错误地导入了from django.template.defaultfilters import slugify,然后是from django.utils.text import slugify,我没有导入from django.utils.text import slugify.。请写下您的答案以接受。 @WillemVanOnsem

标签: python django django-models slug django-2.2


【解决方案1】:

升级 Django,1.9 版引入的那个参数allow_unicode,或者调用没有那个参数的函数。

【讨论】:

    【解决方案2】:

    由于 slugify 函数在其他应用程序中工作,这意味着您使用了不同的函数,至少在该文件中通过 slugify 标识符引用。这可能有几个原因:

    1. 您导入了错误的slugify 函数(例如slugify template filter function [Django-doc]
    2. 您确实导入了正确的函数,但稍后在文件中您导入了另一个名为 slugify 的函数(可能通过别名或通配符导入);或
    3. 您在文件中定义了一个名为 slugify 的类或函数(可能在导入 slugify 之后)。

    不管什么原因,它都指向了“错误”的函数,因此它无法处理命名参数allow_unicode

    您可以通过重新组织导入或为函数/类名称指定不同的名称来解决此问题。

    【讨论】:

    • 完美答案。谢谢! @willem-van-onsem
    猜你喜欢
    • 2016-09-17
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2021-03-17
    • 2020-10-01
    • 2018-06-19
    相关资源
    最近更新 更多