4

我正在尝试以不同的方式使用 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)

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

website.urls.home_urls

尽管有不同的 apphHooks。

例子:

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

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


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

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

只要:

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

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

网站.urls.home_urls.py

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

4

2 回答 2

0

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

于 2013-09-25T14:44:04.850 回答
0

当您在 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 调度程序文档

于 2015-05-20T16:12:26.040 回答