【问题标题】:django modeltranslation 404django模型翻译404
【发布时间】:2013-09-19 22:18:24
【问题描述】:

我正在尝试以两种语言设置我的应用程序,但是我在所有应用程序的 url 上都收到 404 错误,即使我之前以完全相同的方式设置了另一个应用程序。

models.py:

class New(models.Model):
    title = models.CharField(max_length=300)
    slug = models.SlugField(max_length=300, editable=False)
    pub_date = models.DateTimeField(auto_now_add=True)
    text = models.TextField()

    def __unicode__(self):
        return self.title

    def save(self, *args, **kwargs):
        if not self.id:
            # Newly created object, so set slug
            self.slug = slugify(self.title)

        super(New, self).save(*args, **kwargs)

translation.py:

class NewTranslationOptions(TranslationOptions):
    fields = ('title','text')

translator.register(New, NewTranslationOptions)

urls.py:

urlpatterns += i18n_patterns('',
    url(r'^categories/$', 'products.views.categories_index', name='categories_index'),
    url(r'^(?P<category_slug>[\w-]+)/$', 'products.views.specific_category', name='specific_category'),
    url(r'^(?P<category_slug>[\w-]+)/(?P<product_slug>[\w-]+)/$', 'products.views.specific_product', name='specific_product'),

    url(r'^news/$', 'news.views.news_index', name='news_index'),
    url(r'^news/(?P<news_slug>[\w-]+)/$', 'news.views.specific_new', name='specific_new'),
)

在这里你还可以看到我的其他应用产品的网址,它工作得很好。如果您还需要什么,请告诉我。

【问题讨论】:

    标签: django internationalization django-i18n django-modeltranslation


    【解决方案1】:

    您的 specific_categoryspecific_product 网址模式正在捕获来自 news 应用程序的网址:

    >>> re.match("(?P<category_slug>[\w-]+)", "news").groups()
    ('news',)
    

    重新排列您的网址模式:

    urlpatterns += i18n_patterns('',
        url(r'^categories/$', 'products.views.categories_index', name='categories_index'),
    
        url(r'^news/$', 'news.views.news_index', name='news_index'),
        url(r'^news/(?P<news_slug>[\w-]+)/$', 'news.views.specific_new', name='specific_new'),
    
        url(r'^(?P<category_slug>[\w-]+)/$', 'products.views.specific_category', name='specific_category'),
        url(r'^(?P<category_slug>[\w-]+)/(?P<product_slug>[\w-]+)/$', 'products.views.specific_product', name='specific_product'),
    )
    

    或者,考虑将category/ 前缀添加到来自products 应用程序的模式:

    url(r'^category/(?P<category_slug>[\w-]+)/$', 'products.views.specific_category', name='specific_category'),
    url(r'^category/(?P<category_slug>[\w-]+)/(?P<product_slug>[\w-]+)/$', 'products.views.specific_product', name='specific_product'),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-12
      • 2015-06-03
      • 1970-01-01
      • 2019-12-10
      • 2015-02-09
      • 2018-04-11
      • 2018-08-28
      • 2020-11-03
      相关资源
      最近更新 更多