0

我用我的項目modeltranslation,我的目標是要還翻譯我的網址的蛞蝓。Django的URL蛞蝓與modeltranslation NoReverseMatch錯誤

蛞蝓成功地翻譯,我重寫了我的模型的保存方法自動填充廢料場在我的項目的所有語言。

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+)/$'] 

其接縫奇怪,因爲這正是我似乎有在我的url定義中定義。所有這些都是在我用模型翻譯翻譯slu before之前工作的。是否有某種由url定義執行的slug查找? 我是否缺少別的東西?

+0

怎麼樣,如果你把這個'get_absolute_url'裏面:'從django.utils導入translation'和'LANG = translation.get_language()'和'與translation.override(朗):URL =反向(...)返回url' ?? –

+0

感謝你的輸入,但我意識到,這已經無關modeltranslation本身,我搞砸了正則表達式在編輯我的代碼 – matyas

回答

0

事實證明,我的問題無關,與modeltranslation和語言,而我是編輯我的代碼,我不小心編輯導致了這一錯誤我的網址定義。

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'), 

(失蹤befor P問號):

?P<frontend_category_slug>