【问题标题】:django-cms app hook at homepage errordjango-cms 应用程序挂钩在主页错误
【发布时间】:2012-02-26 20:25:30
【问题描述】:

我正在使用 django-cms,我想为现有应用程序创建一个 app-hook。如果我选择显示 app-hook 的页面不是主页,这很好。

这是我正在挂接的应用程序的 urls.py:

from django.conf.urls.defaults import patterns, include, url

urlpatterns = patterns('films.views',
    url(r'^$', 'index'),
    url(r'^(?P<film_id>\d+)/$', 'detail'),
)

cms_app.py如下:

from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from django.utils.translation import ugettext_lazy as _

class FilmApphook(CMSApp):
    name = _("Film Apphook")
    urls = ["films.urls"]

apphook_pool.register(FilmApphook)

我有网址:

/ (<- set to have the slug home, but django-cms doesn't seem to serve it at /home if it's the startpage)
/news
/...

当我将主页设置为具有 app-hook 时,它会呈现我的电影的索引。views,购买我会得到一个 404 去任何细节操作。

即

/ <- correctly renders films.index
/home <- 404
/home/1 <- 404
/1 <- 404

如果我将 app-hook 改为在新闻下,一切正常,(或者如果我将另一个页面设为主页)。

/news <- correctly renders films.index
/news/1 <- correctly renders films.detail

问题似乎是 django-cms 忽略了起始页的 slug,有没有办法解决这个问题?

我可能应该提到,我已经尝试设置覆盖 url 来解决这个问题,当 /home 被提供时,/home/1 仍然给出 404。

【问题讨论】:

    标签: django django-cms


    【解决方案1】:

    这是一个有点狡猾的解决方法,但我今天可以忍受它。我基本上将一个名为 /films 的子页面添加到 /home,确保它不在导航中,并在那里添加 app-hook。

    home/fake-child-page 没有自己的内容,所以这就是我可以忍受它的原因,我只剩下我想要的 url。

    / <- films.views.index
    /films/1 <- films.views.details/1
    

    【讨论】:

    • 感谢您给出这个答案。对于所有意图和目的,它都有效。唯一的缺点是您在管理员中看到了不必要的页面。我设法通过在页面上设置 reverse_id 和 {% page_attribute "slug" 'myReverseId' %} 来获取子页面的 slug。
    【解决方案2】:

    这可能是您的 django-cms 版本的错误:

    https://github.com/divio/django-cms/issues/47

    【讨论】:

    • 我正在运行 2.2,其中修复了该错误。app-hook 工作正常(即索引工作正常),只是 url 路由很麻烦。
    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多