【问题标题】:Django-CMS AppHooks with conflicting urls?带有冲突 URL 的 Django-CMS AppHooks?
【发布时间】:2012-11-16 15:02:27
【问题描述】:

我正在尝试以不同的方式使用 django-cms 应用程序挂钩。我只有一个应用程序,有不同的网站页面。对于每个页面,我都创建了一个 AppHook,因为我想通过 cms 控制所有页面。

为此,在应用程序内部,我做了一个包,每个页面都有 urls.py 文件,例如:

/urls
   /home_urls.py
   /portfolio_urls.py
   /contacts_urls.py

以下是一些应用挂钩的定义:

class WebsiteHome(CMSApp):
    name = _("cms-home")
    urls = ["website.urls.home_urls"]

apphook_pool.register(WebsiteHome)


class WebsiteServices(CMSApp):
    name = _("cms-services")
    urls = ["website.urls.services_urls"]

apphook_pool.register(WebsiteServices)

无论如何,问题是:我对正则表达式没有任何控制权。每个,都在输入它找到的第一个正则表达式,在这种情况下,是

中的 urlpattern

website.urls.home_urls

尽管有不同的 apphHooks。

例子:

如果我编写一个 slug 联系人(有一个到 WebsiteContacts 的 apphook),它仍然会转到与 WebsiteHome(app 挂钩)关联的 home_urls.py 文件。

有人遇到过类似的问题吗?


基本上,我想说的是正则表达式有问题。我做不到:

url(r'^$', [...]),

仅:

url(r'^', [...]),

如果我输入“$”,它不会输入任何正则表达式。如果我拿走它,它总是会进入

website.urls.home_urls.py

尽管 slug 有不同的 Apphook,与不同的 urls.py 文件相关联。

【问题讨论】:

    标签: django django-cms


    【解决方案1】:

    你试过r'^/$'吗?我在一些 app-hook url 中使用了r'^/?$',但我想知道r'^$' 是否因为'/'而对你失败?

    【讨论】:

      【解决方案2】:

      当您在 CMS 中将每个 URL 文件定义为单独的应用程序挂钩时,它们将各自附加到 CMS 中的某个页面,例如

      www.mysite.com/home
      www.mysite.com/contacts
      www.mysite.com/services
      etc
      

      因为这些 URL 文件附加到页面,这应该可以防止 urlpatterns 之间的冲突。例如,我有一个 URL 文件附加到一个名为 News 的 CMS 应用程序,它看起来像这样;

      urlpatterns = patterns(
          '',
          url(r'^(?P<slug>[-_\w]+)/$', NewsDetailView.as_view(), name='news_detail'),
          url(r'^$', NewsListView.as_view(), name='news_list'),
      )
      

      附在mysite.com/news 的页面上,所以如果我转到mysite.com/news/myslug,我点击NewsDetailView,如果我转到mysite.com/news,我点击NewListView。

      使用这个例子,如果你有一个联系人的 slug,你会去mysite.com/contacts/contact-slug 打那个NewsDetailView。

      如果您不知道,请在 urlpatterns 上添加一个旁注,正则表达式中的 ^ 表示要匹配的模式的开始,$ 表示结束。 URL dispatcher docs

      【讨论】:

        猜你喜欢
        • 2016-03-25
        • 1970-01-01
        • 2020-07-09
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 2021-03-09
        • 1970-01-01
        • 2015-01-06
        相关资源
        最近更新 更多