我在我的项目中使用modeltranslation,我的目标是也翻译我的url的slug。在
slug被成功地翻译了,我重写了模型的save方法来自动填充项目中所有语言的slug字段。在
class FrontendCategory(models.Model):
name = models.CharField(_('Name'), max_length=255, db_index=True)
slug = AutoSlugField(_('Slug'), populate_from='name', max_length=255, db_index=True)
def save(self, *args, **kwargs):
for lang_code, lang_verbose in settings.LANGUAGES:
if hasattr(self, 'slug_%s' % lang_code) and hasattr(self, 'name_%s' % lang_code):
setattr(self, 'slug_%s' % lang_code, slugify(getattr(self, 'name_%s' % lang_code, u"")))
def get_absolute_url(self):
url = reverse(
'catalogue:frontend-category',
kwargs={'frontend_category_slug': self.slug, 'pk': self.pk})
return url
我检查了,所有的slug都被翻译并正确地保存在数据库中。在
这是我的网址:
^{pr2}$如果在模板中调用get_absolute_url方法,将引发以下错误:
Reverse for 'frontend-category' with arguments '()' and
keyword arguments '{'pk': 5, 'frontend_category_slug':'test-slug'}' not found.
1 pattern(s) tried: ['de/catalogue/section/(P<frontend_category_slug>[\\w-]+(/[\\w-]+)*)_(?P<pk>\\d+)/$']
这听起来很奇怪,因为这正是我在url定义中定义的。在我用modeltranslation翻译slug之前,所有这些都是有效的。url定义是否执行了某种类型的slug查找? 我还缺什么吗?在
结果发现,我的问题与模型翻译和语言无关,当我编辑代码时,我不小心编辑了导致此错误的url定义。在
应该是
^{pr2}$(p前面缺少问号):
相关问题 更多 >
编程相关推荐