django-cms apphook urls不使用Python shell使用reverse()

时间:2014-08-16 18:52:00

标签: python django shell django-cms

我创建了一个django CMS apphook。不幸的是,我无法使用Python shell反转apphook urls。

cms_app.py文件如下所示:

class ArticleApp (CMSApp):
    name = _('Article App')
    app_name = 'article_app'
    urls = ['article.urls']

apphook_pool.register(ArticleApp)

这是我的urls.py文件:

urlpatterns = patterns('',
    url(r'^(?P<slug>[\w\-]+)?', ArticleView.as_view(), name='article-by-slug'),
)

模板文件是:

{% url 'article_app:article-by-slug' article.slug %}

模板内的URL反转执行预期。如果我尝试使用Python shell执行相同操作,则会收到错误消息:

>>> from django.core.urlresolvers import reverse
>>> from article.models import Article
>>> a = Article.objects.get(pk=1)
>>> reverse('article_app:article-by-slug', kwargs={'slug': a.slug})
# Reverse for 'article_app:article-by-slug' with arguments '()' and keyword arguments '{'slug': 'this-is-article-1'}' not found.

urls.py中定义的其他网址与shell内部预期的工作方式相同。只有apphook网址不起作用。

有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

感谢@Benjamin Wohlwend,我能够解决问题。 apphook页面在&#34; en-us&#34;中无法使用。 language(Django管理命令的默认设置,如&#34; shell&#34;)。我必须在倒车之前激活正确的语言:

from django.utils import translation
translation.activate('de')

答案 1 :(得分:0)

从反面删除命名空间:

reverse('article-by-slug', kwargs={'slug': a.slug})