簡體   English   中英

具有modeltranslation NoReverseMatch錯誤的Django URL插件

[英]Django url slugs with modeltranslation NoReverseMatch Error

我在項目中使用modeltranslation,我的目標是也翻譯url的內容。

彈頭已成功翻譯,我改寫了Model的save方法以自動填充項目中所有語言的彈頭字段。

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

我檢查了一下,所有子彈均已翻譯並正確保存在數據庫中。

這是我的網址:

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定義中定義的內容。 在我使用modeltranslation來翻譯段子之前,所有這些工作都是有效的。 url定義是否執行某種類型的查詢? 我還有其他東西嗎?

事實證明,我的問題與模型翻譯和語言無關,而在編輯代碼時,我不小心編輯了導致此錯誤的URL定義。

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM