我正试图以不同的方式使用django-cms app hooks。我只有一个应用程序,具有不同的网页。对于每个页面,我创建了一个AppHook,因为我想用cms控制所有这些。
要做到这一点,在app中,我做了一个包,每个页面都有urls.py文件,例如:
/urls
/home_urls.py
/portfolio_urls.py
/contacts_urls.py
以下是一些app钩子的定义:
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)
无论如何,问题是:我对正则表达式没有任何控制权。每一个都在它找到的第一个正则表达式上输入,在这种情况下,是
中的urlpatternwebsite.urls.home_urls
尽管有不同的apphHooks。
示例:
如果我写了一个slug联系人(有一个apphook到WebsiteContacts),它仍然会转到与WebsiteHome(app hook)关联的home_urls.py文件。
有没有人有类似的问题?
基本上,我想说的是正则表达式出了问题。我做不到:
url(r'^$', [...]),
仅
url(r'^', [...]),
如果我放'$',它就不会进入任何正则表达式。如果我接受它,它总是进入
website.urls.home_urls.py
尽管slug具有不同的Apphooks,但与不同的urls.py文件相关联。
答案 0 :(得分:0)
你试过r'^/$'
吗?我在某些app-hook网址中使用r'^/?$'
,但我想知道r'^$'
是否因为'/'而失败了?
答案 1 :(得分:0)
由于您已将每个网址文件定义为CMS中的各个应用程序挂钩,因此他们每个都会附加到CMS中的某个页面,例如
www.mysite.com/home
www.mysite.com/contacts
www.mysite.com/services
etc
由于这些网址文件附加到网页上,因此可以防止urlpatterns
之间发生冲突。例如,我有一个名为News的CMS应用程序附加的URL文件,如下所示;
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