2

Django では、どちらも呼び出されない URL パターンを持つ 2 つの異なるファイルを持つことは可能urls.pyですか? それとも、Django は、Django アプリごとに URL パターンのセットが 1 つしかなく、それを呼び出す必要があることに依存していurls.pyますか?

私は Django CMS を使用しており、アプリを 2 つのアプリフックと 2 つのメニューに分割したいと考えています。だから私はandにurls.py分割しようとしましたが、正しいURLに名前を付けたにもかかわらず、それを行うことで壊れたようです-例:pub_urls.pytrain_urls.pycms_app.py

from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from django.utils.translation import ugettext_lazy as _
from resources.menu import TrainingMenu, PublicationMenu

class PublicationApp(CMSApp):
    name = _("Publication App") # give your app a name, this is required
    urls = ["resources.pub_urls"] # link your app to url configuration(s)
    menus = [PublicationMenu]

class TrainingApp(CMSApp):
    name = _("Training App") # give your app a name, this is required
    urls = ["resources.train_urls"] # link your app to url configuration(s)
    menus = [TrainingMenu]

apphook_pool.register(PublicationApp) # register your app
apphook_pool.register(TrainingApp) # register your app

このようなことは可能ですか?それとも、これを 2 つの異なるアプリに分割する必要がありますか?

4

3 に答える 3

7

urls.py他の複数の urls ファイルを含める方法として単純に行動することを止めるものは何もありません。

urls.py:

from django.conf.urls.defaults import patterns, include   
urlpatterns = urlpatterns + patterns('',
                                         (r'^', include('pub_urls')),
                                         (r'^', include('train_urls')))

pub_urls.py:

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

urlpatterns = patterns('',
    (r'^$', 'homeview'),
    (r'^stuff/$', 'stuffview')
)

ROOT_URLCONF設定ファイルのルート URL ファイルを指します。

于 2013-01-17T13:09:07.430 に答える
4

Djangoは、urlpatternsファイルが何と呼ばれるかを気にしません。デフォルトのベースurlconfは、慣例によりurls.pyと呼ばれますが、実際にはこれは単なる設定であり、オーバーライドできます。その後、モジュール名でurlconfを明示的に含める必要があるため、これらの名前に違いはありません。

私はDjango-CMSに精通しておらず、CMSAppクラスで何が行われているのかわかりませんが、何が起こっているのかを確認するには、Django-CMSを掘り下げる必要があると思います。

于 2013-01-17T13:06:11.727 に答える
3

設定を使用して構成可能ROOT_URLCONFです。

ジャンゴのドキュメントから

ROOT_URLCONF 
  A string representing the full Python import path to your root URLconf. 
  For example: "mydjangoapps.urls". Can be overridden on a per-request basis 
  by setting the attribute urlconf on the incoming HttpRequest object. See How 
  Django processes a request for details.

リクエストのホストまたはその他のパラメーターに応じて適切に設定できるミドルウェアを作成/取得することもできます。

于 2013-01-17T13:08:37.830 に答える