Django url slugs with modeltranslation NoReverseMatch Error

时间:2017-04-12 11:32:03

标签: python django django-templates django-urls django-modeltranslation

我在我的项目中使用模型转换,我的目标是翻译我的网址。

slugs成功翻译,我覆盖了我的Model的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

我检查了所有slu are并将其正确保存在数据库中。

这是我的网址:

url(r'^section/(P<frontend_category_slug>[\w-]+(/[\w-]+)*)_(?P<pk>\d+)/$',
                self.frontend_category_view.as_view(), name='frontend-category'),

如果我在模板中调用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+)/$']

哪个接缝很奇怪,因为它正好像我在网址定义中定义的那样。所有这一切都在我用模型翻译翻译slug之前有效。是否存在由url定义执行的某种slug查找? 我错过了别的什么吗?

1 个答案:

答案 0 :(得分:0)

事实证明,我的问题与模型翻译和语言无关,而我正在编辑我的代码,我不小心编辑了我的网址定义导致了这个错误。

url(r'^section/(P<frontend_category_slug>[\w-]+(/[\w-]+)*)_(?P<pk>\d+)/$',
                self.frontend_category_view.as_view(), name='frontend-category'),

应该是

url(r'^section/(?P<frontend_category_slug>[\w-]+(/[\w-]+)*)_(?P<pk>\d+)/$',
        self.frontend_category_view.as_view(), name='frontend-category'),

(缺少问号P):

?P<frontend_category_slug>