我创建了一个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网址不起作用。
有什么建议吗?
谢谢!
答案 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})