4

django-cms アプリ フックを別の方法で使用しようとしています。私は、異なるウェブサイトページを持つアプリしか持っていません。cmsですべてを制御したいので、ページごとにAppHookを作成しました。

これを行うには、アプリ内で、各ページの 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

それにもかかわらず、異なるapphooksを持っています。

例:

slug 連絡先 (WebsiteContacts への apphook がある) を作成しても、websiteHome (app hook) に関連付けられた home_urls.py ファイルに移動します。

誰かが同様の問題を抱えていましたか?


基本的に私が言おうとしているのは、正規表現に何か問題があるということです。私は作ることができません:

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

それだけ:

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

「$」を入れると、どの正規表現にも入りません。私がそれを取れば、それは常に上に入る

website.urls.home_urls.py

スラッグにはさまざまな Apphook があり、さまざまな urls.py ファイルに関連付けられています。

4

2 に答える 2

0

これらの URL ファイルのそれぞれを CMS で個別のアプリ フックとして定義すると、それぞれが CMS の特定のページにアタッチされます。

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

これらの URL ファイルはページに添付されているため、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ます。

この例を使用すると、連絡先のスラッグがある場合、それmysite.com/contacts/contact-slugをヒットするために移動しNewsDetailViewます。

気づいていない場合の urlpatterns の補足として^、正規表現の は一致するパターンの開始を$意味し、 は終了を意味します。URL ディスパッチャ ドキュメント

于 2015-05-20T16:12:26.040 に答える